我有一个目标数组[“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;