在JS中过滤数组

时间:2018-03-26 17:33:08

标签: javascript arrays

我似乎无法解决这个问题。

我有两个数组。其中一个数组包含另一个数组的所有ID,以及更多。

var arr1 = [1,2,3,4,5]
var arr2 = [3,5]

我的第一个数组包含了我的第二个数组没有的更多信息(许多其他键)。我需要找到一种方法来选择第二个数组中存在的第一个数组的所有元素并返回它们,以便我只有arr2的元素,但是arr1中包含所有附加数据。我怎么能这样做?

编辑:我应该说清楚,在第一个数组中,我正在寻找与第二个数组的索引匹配的特定ID。所以这里的解决方案非常好,但并不完全是我所追求的。例如:

[ 0: { id: 1, name: "fred" } ...]

我希望将id与我的第二个数组匹配,而不是索引。希望这是有道理的!

2 个答案:

答案 0 :(得分:0)

使用Array.protitype的filterincludes

var arr1 = [1,2,3,4,5]
var arr2 = [3,5,7]

console.log(arr1.filter(x=>!arr2.includes(x)));

arr2.forEach(function(x){
  if(!arr1.includes(x)){
    arr1.push(x);
  }
})

console.log(arr1);

答案 1 :(得分:0)

我在几个月前实现了一个集数据结构,这是差异函数

function difference (firstarr,secondarr) {

    let diffSet = [];

    for ( let i = 0; i < secondarr.length ; i++ ) {
        let hasValue = secondarr.includes(firstarr[i]);
        if ( ! hasValue ) {
            diffSet.push(secondarr[i]);
        }
    }

    for ( let i = 0; i < firstarr.length ; i++ ) {
        let hasValue = secondarr.includes(firstarr[i]);
            if ( ! hasValue ) {
                diffSet.push(firstarr[i]);
            }
    }

    return diffSet;
};

console.log(difference([1,2,3,4],[3,4]));