如何将这个基于ID的对象转换为对象数组?

ale*_*lex 1 javascript arrays

我有这样的数据:

{
  "-L8BpxbS70KYrZMQUF0W": {
    "createdAt": "2018-03-22T16:33:57+08:00",
    "email": "ss@ss.ss",
    "name": "ss"
  },
  "-KYrZMQUF0WL8BpxbS70": {
     // etc.
   }
}
Run Code Online (Sandbox Code Playgroud)

我想转变成这个:

[{
  id: '-L8BpxbS70KYrZMQUF0W
  createdAt: "2018-03-22T16:33:57+08:00",
  email: "ss@ss.ss",
  name: "ss"
}, {
  id: -KYrZMQUF0WL8BpxbS70"
  // etc.
}]
Run Code Online (Sandbox Code Playgroud)

我从这开始:

  Object.keys(idBasedObjects).forEach(key => {
    console.log(resp[key])
  })
Run Code Online (Sandbox Code Playgroud)

但我明白了undefined.

创建这个数组的最佳方法是什么?

Ori*_*ori 7

使用对象传播获取键和值Object.entries(),并Array.map()使用对象传播到所需的表单:

const obj = {"-L8BpxbS70KYrZMQUF0W":{"createdAt":"2018-03-22T16:33:57+08:00","email":"ss@ss.ss","name":"ss"},"-KYrZMQUF0WL8BpxbS70":{}};

const result = Object.entries(obj).map(([id, props]) => ({
  id,
  ...props
}));

console.log(result);
Run Code Online (Sandbox Code Playgroud)

  • 我得说.这是一个非常干净和优雅的解决方案. (2认同)