首页 文章

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

提问于
浏览
-3

对象就像

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

    这应该工作:

    let obj = { 
     358708: [{},{},{}],
     896308: [{},{}]
    }
    
    let arr = Object.keys(obj).map(x => ({ [x]: obj[x]}));
    
    console.log(arr);
    

相关问题