簡體   English   中英

如何使用javascript中的鍵將JSON對象映射到數組

[英]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.

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