javascript:构造一个函数,该函数比较输入数组,并返回一个在所有输入中找到的元素的新数组

时间:2019-06-09 01:14:50

标签: javascript arrays function loops intersection

我正在尝试构造一个函数交集,该交集比较输入数组,并返回一个包含所有输入中包含的元素的新数组。

下面是我的代码:

id

我的代码返回:function intersection (arr){ let newArray = []; let concatArray = arr.reduce((a,e) => a.concat(e), []) //let uniqueArray = Array.from(new Set(concatArray)); // console.log(concatArray) for (let i=0; i<concatArray.length; i++){ let element = concatArray[i]; concatArray.shift() if (concatArray.includes(element)){ newArray.push(element); } } return newArray; } const arr1 = [5, 10, 15, 20]; const arr2 = [15, 88, 1, 5, 7]; const arr3 = [1, 10, 15, 5, 20]; console.log(intersection([arr1, arr2, arr3])); // should log: [5, 15] ,距离还很远

我在做什么错?

1 个答案:

答案 0 :(得分:4)

您可以简单地使用.filter().every()方法来获得所需的输出:

const arr1 = [5, 10, 15, 20];
const arr2 = [15, 88, 1, 5, 7];
const arr3 = [1, 10, 15, 5, 20];

const intersection = ([first, ...rest]) => first.filter(
    v => rest.every(arr => arr.includes(v))
);

console.log(intersection([arr1, arr2, arr3]));