例子:
myArray = [[1,2,3,4],
[2,3,4,5],
[3,4,5,6]
];
期望输出:
newArray = [3,4]
如何生成一个新数组,其中包含所有三个数组中存在的值?
例子:
myArray = [[1,2,3,4],
[2,3,4,5],
[3,4,5,6]
];
期望输出:
newArray = [3,4]
如何生成一个新数组,其中包含所有三个数组中存在的值?
在缩减的同时,返回累加器与当前迭代的子数组的交集:
const myArray = [[1,2,3,4], [2,3,4,5], [3,4,5,6]];
const intersection = myArray.reduce((a, arr) => (
a.filter(num => arr.includes(num))
));
console.log(intersection);
.filter()
来提取匹配的值:
let myArray = [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]];
let intersect = ([f, ...r]) => f.filter(v => r.every(a => a.includes(v)));
console.log(intersect(myArray));
f
和r
的风格令人不悦。然后,在使用它作为第二个参数的默认值之后,您甚至不再使用a
。为什么不直接写成let intersect = ([f, ...r]) => ...
?除此之外,只要您假设OP想要使用reduce
只是一个建议,那么这是一个很好的解决方案。 - user9315861
reduce
是因为你认为这是正确的方法,还是因为你想学习如何使用它? - user9315861reduce
,那么一个真正具有挑战性的版本是使用reduce
和没有其他数组方法来解决这个问题。 - user9315861