格式化动态json数组

时间:2017-02-28 10:05:08

标签: javascript angularjs json

我有一个json数组如下:

Maindata=[
  {"name":"string1"},
  {"name":"string2"},
  {"name":"string3"}
 ];

我需要的是以下类型的数组:

data=[
  {
   "name":"string1",
   "name":"string2",
   "name":"string3"
  }
 ];

任何人都可以通过一些方法帮助我从原始数组中获取所需的json。 (注意:maindata是动态形成的json数组,这就是为什么它的结构是这样的)

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用Object.assign并传播数组元素。

var array = [{ name1: "string1" }, { name2: "string2" }, { name3: "string3" }],
    object = Object.assign({}, ...array);
    
console.log(object);

答案 1 :(得分:0)

您可以使用Array.forEachArray.reduce来迭代Maindata对象的项目以及您可以迭代其键(使用Object.keys)和组的每个项目将数据转换为新结构。(见下面的代码片段)

使用Array.forEach的解决方案

var Maindata=[
  {"name1":"string1"},
  {"name2":"string2"},
  {"name3":"string3"}
 ];
 var result = {};
 var newMaindata=[];
 Maindata.forEach(function(el){
 Object.keys(el).forEach(function(key){
 result[key]=el[key];
 });
 });
 newMaindata.push(result);
 
 console.log(newMaindata);

使用Array.reduce的解决方案

var Maindata = [{
  "name1": "string1"
}, {
  "name2": "string2"
}, {
  "name3": "string3"
}];
var result ;
var newMaindata = [];
result = Maindata.reduce(function(acc,el) {
  Object.keys(el).forEach(function(key) {
    acc[key] = el[key];
  });
  return acc;
},{});
newMaindata.push(result);

console.log(newMaindata);

答案 2 :(得分:0)

使用reduce,您可以执行以下操作



    var Maindata = [{
      "name1": "string"
    }, {
      "name2": "string"
    }, {
      "name3": "string"
    }];

    var finalObj = Maindata.reduce((acc, cur) => {
      Object.assign(acc, cur);
      return acc;
    }, {})

    console.log(finalObj);