使用对象变量将3个数组的数组转换为1个大数组

时间:2018-02-17 12:00:29

标签: javascript arrays node.js

我是StackOverflow的新手,我知道这篇文章可能与另一篇文章重复,所以请不要忘记所有的投票,如果你认为那里有我的问题的答案,请发帖它和我将删除这个问题。谢谢你的理解。

var array1 = ["name", "title", "desc"]
var array2 = [["name1", "name2"], ["title1", "title2"],["desc1", "desc2"]]

我将如何将这些转化为:

[
 {name: "name1", title: "title1", desc: "desc1"},
 {name: "name2", title: "title2", desc: "desc2"}
]

4 个答案:

答案 0 :(得分:2)

您可以使用Array#mapObject.assign(使用spread syntax)和ES6 computed property语法来实现这一目标:

const array1 = ["name", "title", "desc"],
    array2 = [["name1", "name2"], ["title1", "title2"],["desc1", "desc2"]];

const result = array2[0].map( (_, j) =>
    Object.assign(...array1.map( (key, i) => ({ [key]: array2[i][j] }) ))
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

 const result = [];

 for(const [index, key] of array1.entries()){
   for(const [userindex, value] of array2[index].entries()){
     if(!result[userindex])
       result[userindex] = {};
     result[userindex][key] = value; 
   }
}

您可以检查每个键以及与键相关的值,并将每个键/值对分配给值的位置处的结果对象。

答案 2 :(得分:0)

您可以使用键作为键和新对象的值来减少给定值数组。



var keys = ["name", "title", "desc"],
    values = [["name1", "name2"], ["title1", "title2"],["desc1", "desc2"]],
    objects = values.reduce((r, a, i) => {
        a.forEach((v, j) => Object.assign(r[j] = r[j] || {}, { [keys[i]]: v }));
        return r;
    }, []);
    
console.log(objects);




答案 3 :(得分:0)

您也可以这样使用:



var array1 = ["name", "title", "desc"];
var array2 = [["name1", "name2"], ["title1", "title2"],["desc1", "desc2"]];
var res = [];
for(var i=0; i<array2[0].length; i++){
  var obj = {};
  for(var j=0; j<array1.length; j++){
    var key = array1[j];
    var value = array2[j][i];
    obj[key] = value;
  }
  res.push(obj);
}
console.log(res);
&#13;
&#13;
&#13;