【问题标题】:How can I convert this object of objects into an array of objects?如何将此对象对象转换为对象数组?
【发布时间】:2018-10-13 10:04:17
【问题描述】:

如何转换这个对象:

var json = {
    "user3" : {
        "id" : 1
    },
    "user1" : {
        "id" : 3
    },
    "user2" : {
        "id" : 6
    }
}

到这个数组:

var json = [{
        "name": "user1",
        "id": 3
    }, {
        "name": "user2",
        "id": 6
    }, {
        "name": "user3",
        "id": 1
    }];

谁能告诉我?或者我怎样才能像第一个示例那样对对象进行排序?

【问题讨论】:

    标签: javascript arrays type-conversion


    【解决方案1】:

    试试

    const src = {
        "user3" : {
            "id" : 1
        },
        "user1" : {
            "id" : 3
        },
        "user2" : {
            "id" : 6
        }
    }
    
    const out = Object.keys(src).map((key) => ({name: key, id: src[key].id}))
    

    【讨论】:

    • 谢谢。是的,根据定义,地图更简单
    【解决方案2】:

    您可以使用Object.keys()Array.prototype.reduce() 来迭代对象项并从单个项中创建一个数组。

    Object.keys(json).reduce((items, username) => {
    const user = json[username];
       return items.concat({
          name: username,
          id: user.id
       });
    }, []);
    

    【讨论】:

      【解决方案3】:

      您可以使用Object.entries 将对象转换为数组。使用map 循环遍历数组并使用Object.assign 构造新对象。

      var json = {
        "user3": {
          "id": 1
        },
        "user1": {
          "id": 3
        },
        "user2": {
          "id": 6
        }
      }
      
      var result = Object.entries(json).map(([k, o]) =>Object.assign(o, {name: k}));
      
      console.log(result);

      【讨论】:

        【解决方案4】:

        另一种方法,使用for-in loop

        const json = {
            "user3": {
                "id": 1
            },
            "user1": {
                "id": 3
            },
            "user2": {
                "id": 6
            }
        }
        
        const result = [];
        
        for (const prop in json) {
            result.push({ "name": prop, "id": json[prop].id });
        }
        
        console.log(result);
        

        将提供:

        [ { name: 'user3', id: 1 },
          { name: 'user1', id: 3 },
          { name: 'user2', id: 6 } ]
        

        【讨论】:

          猜你喜欢
          • 2022-01-23
          • 2020-06-15
          • 2016-03-11
          • 2018-02-13
          • 2021-01-28
          • 2018-10-29
          相关资源
          最近更新 更多