如何判断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/