javascript - 检查一个 javascript 数组是否包含另一个数组的所有值

标签 javascript

如何判断stringB是否包含stringA的所有值?

假设您想从 stringA 中创建一个新字符串 (stringB),当您从 stringA 中获取一个值时,它会从 stringA 中消失,您可以'不要使用它两次。

因此,如果 stringB 有重复的值,但 stringA 只有其中一个值,那么程序应该返回 false

示例输入:

stringA = "A B C D"

stringB = "B B C D"

示例输出:

false

因为stringA只有一个“B”。

示例输入:

stringA = "apple banana orange mango"

stringB = "banana orange"

示例输出:

这是我所拥有的,但是当它应该返回 false 时它返回了 true 任何人都可以告诉我我的逻辑有什么问题或者解决方案应该是什么?谢谢!

let arrayContainsArray = (a, b) => {
  let a_array = a.split(" ")
  let b_array = b.split(" ")

  for(let i = 0; i < b_array.length; i++) {
    if (a_array.includes(b_array[i])) {
      let index = a_array.indexOf(b_array[i])
      a_array.splice(index, 1)
    } else {
      return false
    }
    return true
  }
}

console.log(arrayContainsArray('two times three is not four', 'two times two is four'));

最佳答案

您可以使用 every 遍历数组并检查条件,使用 includes 检查数组是否包含某个元素。

let arrayContainsArray = (a, b) => {
  let a_array = a.split(" ")
  let b_array = b.split(" ")

  return a_array.every(o => b_array.includes(o));
}

console.log(arrayContainsArray('two times three is not four', 'two times two is four'));
console.log(arrayContainsArray('two times two is four', 'two times two is four'));


另一种选择是将b_array 变成新集合。使用 has 检查集合是否包含某个元素。

let arrayContainsArray = (a, b) => {
  let a_array = a.split(" ")
  let b_array = b.split(" ")

  let set = new Set(b_array);
  return a_array.every(o => set.has(o));
}

console.log(arrayContainsArray('two times three is not four', 'two times two is four'));
console.log(arrayContainsArray('two times two is four', 'two times two is four'));

关于javascript - 检查一个 javascript 数组是否包含另一个数组的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256750/

相关文章:

javascript - 如何在嵌套在数组中的对象中添加项目

javascript - 从文本 block 获取数字

javascript - 编辑 HTML 表格行数据

php - 延迟 PHP 执行直到 JavaScript cookie 设置?

javascript - Knockoutjs 在一次计算中更新多个可观察量

javascript - jQuery:我需要 keyUp 和 Change 事件吗?

javascript - 使用 javascript 删除按钮

javascript - 将对象字符串转换为JS对象

Javascript:将 <select> 替换为 <div>?

javascript - 在 MySQL 数据库中保存 Canvas