Javascript - 将对象转换为数组对象

Dan*_*ith 3 javascript arrays

尝试将以下对象(从 API 响应中获取)转换为数组对象。

const oldObj = {
    Georgia : {
        notes: "lorem ipsum",
        lat: "32.1656",
        long: "82.9001"
    },
    Alabama : {
        notes: "lorem ipsum",
        lat: "32.3182",
        long: "86.9023"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的预期如下:

const desireArray = [
    {
        name: "Georgia",
        notes: "lorem ipsum",
        lat: "32.1656",
        long: "82.9001"
    },
    {
        name: "Alabama",
        notes: "lorem ipsum",
        lat: "32.3182",
        long: "86.9023"
    }
];
Run Code Online (Sandbox Code Playgroud)

尝试使用 forEach 但是,我认为这不是方法,似乎向我返回了错误。

oldObj.forEach((el, i) => {
    console.log(el);
});
Run Code Online (Sandbox Code Playgroud)

类型错误:oldObj.forEach 不是函数

有什么帮助吗?

hgb*_*123 5

forEach是数组的方法,同时你oldObj是对象

首先你必须将它转换为数组,这里我们可以做的是将对象转换为键值对数组

使用 withmap可以使代码更短

const oldObj = {
  Georgia: {
    notes: "lorem ipsum",
    lat: "32.1656",
    long: "82.9001",
  },
  Alabama: {
    notes: "lorem ipsum",
    lat: "32.3182",
    long: "86.9023",
  },
}

const res = Object.entries(oldObj).map(([name, obj]) => ({ name, ...obj }))

console.log(res)
Run Code Online (Sandbox Code Playgroud)

参考

Object.entries()

  • `([name, obj]) => ...` -> [解构赋值](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment), `. ..obj` -> [扩展语法](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax) (2认同)