繁体   English   中英

使用Node JS将多个数组转换为一个数组的对象

[英]Multiple arrays transformed to objects to one array with Node JS

例如我有这个数组:

a = [1, 2, 3];
b = ["a", "b", "c"];

我想从这些数组中创建一个对象,如下所示:

c = [{
  a: 1,
  b: "a"
},
{
  a: 2,
  b: "b"
},
{
  a: 3,
  b: "c"
}];

您可以使用Array.map

 let a = [1, 2, 3]; let b = ["a", "b", "c"]; let c = a.map((v,i) => ({a:v, b: b[i]})); console.log(c); 

您可以使用Array#reduce进行以下操作:

 var a = [1, 2, 3]; var b = ["a", "b", "c"]; var c = a.reduce((accumulator, e, index) => { return accumulator.concat({a: e, b: b[index]}); }, []) console.log(c); 

您可以Array.forEach()使用Array.forEach()循环:

 var a = [1, 2, 3]; var b = ["a", "b", "c"]; var c = []; a.forEach((item, index)=>{ c.push({a: item, b: b[index]}); }); console.log(c); 

您可以获取具有任意数量的属性的对象并生成对象数组。

 var a = [1, 2, 3], b = ["a", "b", "c"], result = Object .entries({ a, b }) .reduce((r, [k, a]) => { a.forEach((v, i) => Object.assign(r[i] = r[i] || {}, { [k]: v })); return r; }, []); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

您可以使用如下所示的for循环:

  var a = [1, 2, 3]; var b = ["a", "b", "c"]; var c = []; for (var i = 0; i < a.length; i ++) { c[i] = {'a': a[i], 'b': b[i]}; } console.log(c); 

传统但兼容的方式

注意:此页面中的大多数解决方案不检查变量ab的长度是否相同

var a = [1, 2, 3];
var b = ["a", "b", "c"];

function combine(a,b){

    if (a.length === b.length){ // Check if both arrays have same length  
      var arr = []; // Make an empty array
      for(var i=0; i<a.length; i++){ // iterate every element of the array
          var obj = {} // Make an empty object
          obj["a"] = a[i];
          obj["b"] = b[i];
          arr.push(obj);
      }
    }else{        
        throw "Arrays don't have the same length";
    }

    return arr;
}

combine(a, b); // Use it like a function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM