在ES6 / ES6 +中将复杂的对象转换为数组

时间:2018-01-22 04:36:16

标签: javascript arrays

对象就像

let obj = { 
 358708: [{},{},{}],
 896308: [{},{}]
}

我想要的是这样的:

let arr = [ 
  { 358708:[{},{},{}] },
  { 896308:[{},{}]}
]

我尝试过像这样的Object.entries:

let arr = Object.entries(obj)

得到了错误的答案: [{[" 358708",[{},{},{}]},{" 896308",[{},{}]}]

我尝试了像这样的Object.keys和Object.values:

let keys = Object.keys(obj)
let values = Object.values(obj)
let newArr = []
for(let i = 0; i < keys.length; i++){
  newArr.push({keys[i]: values[i]})
}

它不起作用。

我试过像这样的Object.keys:

let objKeys = Object.keys(obj);
let arr = objKeys.map(x => ({x: obj[x]}))

得到了错误的答案: [{x:[{},{},{}]},{x:[{},{}]}]

虽然@Ayush Gupta已经显示了正确答案,但我仍然感到困惑,为什么要添加[]?

我尝试了Converting a JS object to an array using jQuery 个答案,但我没有使用jQuery $ .map。

获得该方法的正确和最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这应该有效:

&#13;
&#13;
let obj = { 
 358708: [{},{},{}],
 896308: [{},{}]
}

let arr = Object.keys(obj).map(x => ({ [x]: obj[x]}));

console.log(arr);
&#13;
&#13;
&#13;