javascript - 在 JavaScript 中操作数组

标签 javascript arrays

我有两个像这样的数组

var arr1 = ["1", "2", "3", "4"];
var arr2 = [["a", "b", "c", "d"], ["e", "f", "g", "h"], ["i", "j", "k", "l"], ["m", "n", "o", "p"], ["q", "r", "s", "t"]];

我想做的是将两个数组合并以形成如下所示的最终输出

var newArr = [{1: "a", 2: "b", 3: "c", 4: "d"}, {1: "e", 2: "f", 3: "g", 4: "h"}, {1: "i", 2: "j", 3: "k", 4: "l"}, {1: "m", 2: "n", 3: "o", 4: "p"}, {1: "q", 2: "r", 3: "s", 4: "t"}];

因此,有效地从第二个数组中取出每个数组,然后将其与第一个数组合并以形成一个对象。

我只是想知道在 javascript 中执行此操作的最有效方法是什么?

任何帮助将不胜感激

感谢您的宝贵时间

最佳答案

假设输入始终匹配,我将从 arr2 开始:

arr2.map(x => 

但是,此时您想要的是将 x 中的 zip 值和 y 中的相应值一起压缩,所以让我们介绍一个首先是助手(我实际上将其称为 zipKeyVal1 因为它将值从第一个参数映射到键,然后将第二个参数映射到值)。

function zipKeyVal(keys,values) {
    var result = {};
    for (var i = 0; i < keys.length; i++) {
        result[keys[i]] = values[i];
    }
    return result;
}

这样,我们的解决方案就变成了:

var newArr = arr2.map(x => zipKeyVal(arr1, x));
<小时/>

1哦,显然 underscore.js 调用的是 _.object,而 lodash zipObject

关于javascript - 在 JavaScript 中操作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769623/

相关文章:

ruby - 如果正则表达式不匹配,则从数组中删除元素

php - 匹配字符串中的连字符以生成数组输出

javascript - 如何在 AngularJs 表达式中使用 ng-repeat $index 变量?

javascript - Mousemove 事件在 Iiyama Multi Touch 上未触发

javascript - 在没有 JQuery 的 IE 中使用 Javascript 检索 "Placeholder"值

c++ - 如何制作用户指定值的二维数组?

javascript - 硬编码的 JavaScript 数组和代码生成的数组有什么区别?

java - 如何确保 arrayadapter 不接受重复值

javascript - 如何检查 JavaScript 中是否存在函数?

javascript - 从 Pug 中的字符串插入新行