我在 Javascript 中有两个数组
var array1 = [[10, 2], [11, 4], [12, 30], [13, 17], [14, 28]];
var array2 = [[8, 13], [9, 19], [10, 6], [11, 7], [12, 1]];
我想从 array1
中获取与 array2
的每个数组的第一个元素匹配的数组集
在我的示例中,array1
和 array2
都具有第一个元素为 10
11
和 的数组>12
,所以它应该返回
[[10, 2], [11, 4], [12, 30]];
有没有简单有效的方法使用纯 javscript 或 lodash、underscor 框架或类似的东西。没有遍历和匹配这两个数组中的一个?
最佳答案
在 ES6 中,你可以使用 Set
.
var array1 = [[10, 2], [11, 4], [12, 30], [13, 17], [14, 28]],
array2 = [[8, 13], [9, 19], [10, 6], [11, 7], [12, 1]],
set = new Set(array2.map(a => a[0])),
result = array1.filter(a => set.has(a[0]));
console.log(result);
以对象作为哈希表的版本
var array1 = [[10, 2], [11, 4], [12, 30], [13, 17], [14, 28]],
array2 = [[8, 13], [9, 19], [10, 6], [11, 7], [12, 1]],
result = array1.filter(function (a) {
return this[a[0]];
}, array2.reduce(function (r, a) {
r[a[0]] = true;
return r;
}, Object.create(null)));
console.log(result);
关于javascript - 根据条件从Javascript中的两个数组数组中获取一组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39879689/