[英]How to map JSON Object to array with keys in javascript
關於這個主題有大約數百萬個問題(和答案),但沒有一個在做我需要做的事情。 我有一個 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"
}
]
我認為你的方向是正確的,如果你想添加“key”屬性,你必須手動映射屬性,對於第二個選項,因為你不需要“key”屬性,它可以做一點更優雅:
對於第一個選項:
Object.keys(data).map(v => ({
key: v,
...data[v]
}));
對於第二個選項更簡單:
Object.keys(data).map(v => ({[v]: {...data[v]}}))
您可以輕松地將數據映射到新對象:
Object.keys(data).map(key => ({ ...data[key], "key": key }));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.