我如何将一个包含多个对象的对象的数组转换为对象数组

时间:2018-10-22 11:13:21

标签: javascript angular typescript

我有一个如下所示的数组...

arr = [{
  Bildbearbeiter: 1,
  Bügler: 2,
  Einkäufer: 3,
  Empfänger: 4,
  Fotograf: 5,
}];

但我想更改它

arr = [{
    Bildbearbeiter: 1
  },
  {
    Bügler: 2
  },
  {
    Einkäufer: 3
  },
  {
    Empfänger: 4
  },
  {
    Fotograf: 5
  }

];

这样我就可以遍历每个对象。有什么办法解决吗?

预先感谢

5 个答案:

答案 0 :(得分:2)

您可以简单地使用Array.map()Object.keys()

let arr = [ { Bildbearbeiter: 1, Bügler: 2, Einkäufer: 3, Empfänger: 4, Fotograf: 5, } ];

let result = Object.keys(arr[0]).map((key)=> ({[key] : arr[0][key]}));
console.log(result);

答案 1 :(得分:2)

使用Array.mapObject.entries

let arr = [{Bildbearbeiter: 1,Bügler: 2,Einkäufer: 3,Empfänger: 4,Fotograf: 5}];

arr = Object.entries(arr[0]).map(([k,v]) => ({[k]:v}));
console.log(arr);

答案 2 :(得分:1)

通过点击运行代码段按钮进行尝试:

var arr = [{
  Bildbearbeiter: 1,
  Bügler: 2,
  Einkäufer: 3,
  Empfänger: 4,
  Fotograf: 5,
}];

var newArray = [];

for (let key in arr[0]) {
  newArray.push({
    [key]: arr[0][key]
  });
}

console.log(newArray);

或尝试以下操作:

var arr = [{
  Bildbearbeiter: 1,
  Bügler: 2,
  Einkäufer: 3,
  Empfänger: 4,
  Fotograf: 5,
}];

var newArray = Object.keys(arr[0]).map(key => ({
  [key]: arr[0][key]
}))

console.log(newArray);

答案 3 :(得分:1)

您可以通过将所有对象添加到结果集中来减少数组。

var array = [{ "Bildbearbeiter": 1, "Bügler": 2, "Einkäufer": 3, "Empfänger": 4, "Fotograf": 5 }],
    result = array.reduce((r, o) => r.concat(Object.entries(o).map(([k, v]) => ({ [k]: v }))), []);
    
console.log(result);

答案 4 :(得分:0)

您可以map数组,遍历每个对象的keys,并分配一个包含键和当前项目值的全新对象。

arr.map(i => {
    return Object.keys(i).map(k => {
       return {[k]: i[k]};
    });
});

正在工作的小提琴:http://jsfiddle.net/sw3Lxm7f/