U r*_*u s 4 javascript arrays ecmascript-6
我有两个数组[a,b,c,d]和[b,d,f,h].
我希望得到一个带有共同元素的数组[b,d].
我能做到这一点与组合filter和indexOf:
[a,b,c,d].filter(el => [b,d,f,h].indexOf(el) !== -1)
Run Code Online (Sandbox Code Playgroud)
但我想知道我是否以及如何做同样的事情reduce.
我承认,尽管看了很多例子,reduce但对我来说仍然是最模糊的JS方法之一,所以我真的很感激一些建议.
ES6,一个propoosal Array#includes
该
includes()方法确定数组是否包括某个元素,返回true或false适当.
在每个循环中aa,如果在测试数组中找到值,则reduce会将元素添加到结果数组中bb.如果未找到,则返回前一结果.
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);Run Code Online (Sandbox Code Playgroud)
使用包含所有数组的单个数组只是一种更智能的方法.
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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2365 次 |
| 最近记录: |