關于這個主題有大約數百萬個問題(和答案),但沒有一個在做我需要做的事情。我有一個 JSON 物件,其中每個鍵的值都是一個物件。我想將其轉換為陣列并維護頂級鍵。
{
"someKey1": {
active: true,
name: "foo"
},
"someKey2": {
active: false,
name: "bar"
}
}
如果我使用 Object.keys() 我得到頂級鍵,但不是它們的值。如果我使用 Object.values() 我會得到一個包含所有值的陣列,但不是它們的鍵。我正在嘗試使用鍵和映射,但只得到回傳的值:
const data = {
"someKey1": {
active: true,
name: "foo"
},
"someKey2": {
active: false,
name: "bar"
}
}
const items = Object.keys(data).map(function(key) {
return data[key];
});
// returns [{active: true, name: foo},{active: false, name: bar}]
有沒有辦法兩者兼得?我想得到一個可以迭代的陣列,看起來像這樣:
[{
key: someKey1,
active: true,
name: "foo"
},
{
key: someKey2,
active: true,
name: "foo"
}]
OR
[
"someKey1": {
active: true,
name: "foo"
},
"someKey2": {
active: false,
name: "bar"
}
]
uj5u.com熱心網友回復:
我認為你正朝著正確的方向前進,如果你想添加“key”屬性,你必須手動映射屬性,對于第二個選項,因為你不需要“key”屬性,它可以做一點更優雅:
對于第一個選項:
Object.keys(data).map(v => ({
key: v,
...data[v]
}));
對于第二個選項更簡單:
Object.keys(data).map(v => ({[v]: {...data[v]}}))
uj5u.com熱心網友回復:
您可以輕松地將資料映射到新物件:
Object.keys(data).map(key => ({ ...data[key], "key": key }));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/485958.html
標籤:javascript 数组 json 目的 钥匙
上一篇:合并查詢