首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查一个数组是否包含JavaScript中另一个数组的任何元素

检查一个数组是否包含JavaScript中另一个数组的任何元素
EN

Stack Overflow用户
提问于 2013-05-01 11:58:02
回答 21查看 718.9K关注 0票数 670

我有一个目标数组["apple","banana","orange"],我想检查其他数组是否包含任何一个目标数组元素。

例如:

代码语言:javascript
复制
["apple","grape"] //returns true;

["apple","banana","pineapple"] //returns true;

["grape", "pineapple"] //returns false;

我如何在JavaScript中实现它?

EN

回答 21

Stack Overflow用户

发布于 2014-09-19 12:52:35

香草js

代码语言:javascript
复制
/**
 * @description determine if an array contains one or more items from another array.
 * @param {array} haystack the array to search.
 * @param {array} arr the array providing items to check for in the haystack.
 * @return {boolean} true|false if haystack contains at least one item from arr.
 */
var findOne = function (haystack, arr) {
    return arr.some(function (v) {
        return haystack.indexOf(v) >= 0;
    });
};

正如@loganfsmyth所指出的,您可以在ES2016中将其缩短为

代码语言:javascript
复制
/**
 * @description determine if an array contains one or more items from another array.
 * @param {array} haystack the array to search.
 * @param {array} arr the array providing items to check for in the haystack.
 * @return {boolean} true|false if haystack contains at least one item from arr.
 */
const findOne = (haystack, arr) => {
    return arr.some(v => haystack.includes(v));
};

或者简单地作为arr.some(v => haystack.includes(v));

如果要确定该数组是否包含其他数组中的所有项,请将some()替换为every()或替换为arr.every(v => haystack.includes(v));

票数 309
EN

Stack Overflow用户

发布于 2019-07-14 17:55:21

ES6解决方案:

代码语言:javascript
复制
let arr1 = [1, 2, 3];
let arr2 = [2, 3];

let isFounded = arr1.some( ai => arr2.includes(ai) );

与之不同的是:必须包含所有值。

代码语言:javascript
复制
let allFounded = arr2.every( ai => arr1.includes(ai) );

希望,这将是有益的。

票数 101
EN

Stack Overflow用户

发布于 2013-05-01 12:16:50

如果你不反对使用图书馆,http://underscorejs.org/有一个交集方法,它可以简化这一点:

代码语言:javascript
复制
var _ = require('underscore');

var target = [ 'apple', 'orange', 'banana'];
var fruit2 = [ 'apple', 'orange', 'mango'];
var fruit3 = [ 'mango', 'lemon', 'pineapple'];
var fruit4 = [ 'orange', 'lemon', 'grapes'];

console.log(_.intersection(target, fruit2)); //returns [apple, orange]
console.log(_.intersection(target, fruit3)); //returns []
console.log(_.intersection(target, fruit4)); //returns [orange]

intersection函数将返回一个新的数组,其中包含它匹配的项,如果不匹配,则返回空数组。

票数 77
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16312528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档