gpt4 book ai didi

javascript - 数组与 Array.prototype.reduce 的交集(集合论)

转载 作者:搜寻专家 更新时间:2023-11-01 05:10:04 25 4
gpt4 key购买 nike

我有两个数组 [a,b,c,d][b,d,f,h]

我想返回一个包含公共(public)元素 [b,d] 的数组。

我可以结合使用 filterindexOf 来实现:

[a,b,c,d].filter(el => [b,d,f,h].indexOf(el) !== -1)

但我想知道我是否以及如何使用 reduce 做同样的事情。

我承认,尽管看了很多例子,reduce 对我来说仍然是最晦涩的 JS 方法之一,所以我真的很感激一些建议。

最佳答案

ES6,与 Array#includes 的提案

The includes() method determines whether an array includes a certain element, returning true or false as appropriate.

aa 的每个循环中,如果在测试数组 bb 中找到该值,则 reduce 将该元素添加到结果数组。如果没有找到,则返回之前的结果。

var aa = ['a','b','c','d'],
bb = ['b','d','f','h'],
cc = aa.reduce((r, a) => bb.includes(a) && r.concat(a) || r, []);

console.log(cc);

使用包含所有数组的单个数组只是一种更聪明的方法。

var aa = ['a','b','c','d'],
bb = ['b','d','f','h'],
result = [aa, bb].reduce((a, b) => a.filter(c => b.includes(c)));

console.log(result);

关于javascript - 数组与 Array.prototype.reduce 的交集(集合论),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37593651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com