我有一个目标数组[“apple”、“banana”、“orange”],我想检查其他数组是否包含任何一个目标阵列元素。
例如:
["apple","grape"] //returns true;
["apple","banana","pineapple"] //returns true;
["grape", "pineapple"] //returns false;
如何在JavaScript中实现?
我有一个目标数组[“apple”、“banana”、“orange”],我想检查其他数组是否包含任何一个目标阵列元素。
例如:
["apple","grape"] //returns true;
["apple","banana","pineapple"] //returns true;
["grape", "pineapple"] //returns false;
如何在JavaScript中实现?
当前回答
使用一些/findIndex和indexOf的组合怎么样?
所以类似这样:
var array1 = ["apple","banana","orange"];
var array2 = ["grape", "pineapple"];
var found = array1.some(function(v) { return array2.indexOf(v) != -1; });
为了使其更可读,可以将此功能添加到Array对象本身。
Array.prototype.indexOfAny = function (array) {
return this.findIndex(function(v) { return array.indexOf(v) != -1; });
}
Array.prototype.containsAny = function (array) {
return this.indexOfAny(array) != -1;
}
注意:如果您想对谓词执行某些操作,可以用另一个findIndex和谓词替换内部indexOf
其他回答
当我看你的答案时,我找不到我想要的答案。我自己做了一些事,我想和你分享。
只有当输入的单词(数组)正确时,它才为真。
函数包含(a,b){让计数器=0;对于(var i=0;i<b.length;i++){;如果(a.包括(b[i]))计数器++;}如果(counter==b.length)返回true;return false;}让main_array=['fo','bar','baz'];设sub_array_a=['fo','obar'];设sub_array_b=['fo','bar'];console.log(包含(main_array,sub_array_a));//返回falseconsole.log(包含(main_array,sub_array_b));//返回true
console.log("searching Array: "+finding_array);
console.log("searching in:"+reference_array);
var check_match_counter = 0;
for (var j = finding_array.length - 1; j >= 0; j--)
{
if(reference_array.indexOf(finding_array[j]) > 0)
{
check_match_counter = check_match_counter + 1;
}
}
var match = (check_match_counter > 0) ? true : false;
console.log("Final result:"+match);
使用筛选器/indexOf:
函数containsAny(源,目标){var result=source.filter(函数(项){return target.indexOf(项)>-1});返回(result.length>0);} //结果var fruits=[“苹果”、“香蕉”、“橙色”];console.log(包含任何(水果,[“苹果”,“葡萄”]);console.log(包含任何(水果,[“苹果”,“香蕉”,“菠萝”]);console.log(包含任何(水果,[“葡萄”,“菠萝”]);
一个简短的写法:找到常量=arr1.some(arr2.includes)
var target = ["apple","banana","orange"];
var checkArray = ["apple","banana","pineapple"];
var containsOneCommonItem = target.some(x => checkArray.some(y => y === x));`
["apple","grape"] //returns true;
["apple","banana","pineapple"] //returns true;
["grape", "pineapple"] //returns false;