簡體   English   中英

如何將對象的這個對象轉換為對象的數組?

[英]How can I convert this object of objects into an array of objects?

如何轉換此對象:

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
    }];

有人可以告訴我嗎? 或者如何像第一個示例那樣對對象進行排序?

嘗試

const src = {
    "user3" : {
        "id" : 1
    },
    "user1" : {
        "id" : 3
    },
    "user2" : {
        "id" : 6
    }
}

const out = Object.keys(src).map((key) => ({name: key, id: src[key].id}))

您可以使用Object.keys()Array.prototype.reduce()遍歷對象項,並根據單個項創建一個數組。

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

您可以使用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); 

一種替代方法,使用for-in循環

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 } ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM