【问题标题】:Convert object to an array of objects?将对象转换为对象数组?
【发布时间】:2018-03-18 07:06:10
【问题描述】:

我有一个看起来像这样的对象:

{
  "1": "Technology",
  "2": "Startup",
  "3": "IT",
}

我需要将其转换为如下所示的对象数组:

[
  {id: 1, name: "Technology"},
  {id: 2, name: "Startup"},
  {id: 3, name: "IT"}
]

最干净、最有效的方法是什么?

【问题讨论】:

  • @OwaisAslam,这绝对不是那个问题的重复。两者都涉及映射对象和数组,以及类似的工具,但它们的开始和结束形状非常不同
  • @KyleMit 我说了什么?
  • 哦,这只是一个重复的建议 - 抱歉缺少上下文 - 我还将评论标记为不再需要(不会因此对作者造成惩罚)所以我想它已经被删除了 - 我'将删除这个和我原来的评论

标签: javascript arrays


【解决方案1】:

您可以将.map()Object.keys() 一起使用:

let data = {
    "1": "Technology",
    "2": "Startup",
    "3": "IT",
};

let result = Object.keys(data)
                   .map(key => ({id: Number(key), name: data[key]}));

console.log(result);

有用的资源:

【讨论】:

  • 我真的需要在 .map() 方面做得更好!谢谢你:)
  • 感谢 Mohammad 添加资源。 #teachamantofish 帮助我解决了自己的问题。
【解决方案2】:

假设您的对象实例名为obj

Object.keys(obj).reduce((acc, curr) => {
    return [...acc, { id: curr, name: obj[curr] }]
}, [])

【讨论】:

    【解决方案3】:

    简单的方法

    var o = {
        "1": "Technology",
        "2": "Startup",
        "3": "IT",
    };
    var arr = [];
    for(var i in o) {
        arr.push({
            id: i,
            number: o[i]
        });
    };
    

    【讨论】:

      【解决方案4】:

      现在您可以使用Object.entries() 将对象转换为键值对数组(也存储为数组)。

      这使我们能够利用array destructuring,因此我们可以使它成为一个不错的单行:

      const obj = {
        "1": "Technology",
        "2": "Startup",
        "3": "IT",
      };
      
      const result = Object.entries(obj).map(([id, name]) => ({id: +id, name}));
      
      console.log(result);

      添加unary plus (+) 将id(字符串)转换为数字。

      【讨论】:

        【解决方案5】:

        const words = {
          told: 64,
          mistake: 11,
          thought: 16,
          bad: 17
        }
        
        const results = []
        
        Object.entries(words).map(val => results.push({
          text: val[0],
          value: val[1]
        }))
        
        console.log(results)

        【讨论】:

        • map 方法用于从当前值投影新值并返回结果。您应该改用.forEach()
        • 你能详细解释一下为什么应该使用 forEach 而不是 map 方法
        猜你喜欢
        • 2020-06-15
        • 2016-03-11
        • 2019-07-11
        • 1970-01-01
        • 2021-05-03
        相关资源
        最近更新 更多