javascript - 根据条件从Javascript中的两个数组数组中获取一组数组

标签 javascript arrays underscore.js lodash

我在 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 的每个数组的第一个元素匹配的数组集

在我的示例中,array1array2 都具有第一个元素为 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/

相关文章:

javascript - Materializecss collapsibles 无法正常工作

javascript - JSON 请求为所有键/值对返回 'undefined'

javascript - 从 javaScript 调用 JavaFx

javascript - 为什么我不能将 JavaScript 函数命名为 `all` ?

c - 快速排序功能仅在最后一个值最大时才有效

javascript - 如何将数据属性值转换为对象数组

python - 填充 numpy 数组的向量方式

javascript - 使用lodash或下划线js查找数组中字符串元素的出现次数

javascript - 使用下划线 countBy 作为数组中对象的嵌套属性

javascript - Lodash基于外部数组对集合进行排序