簡體   English   中英

循環嵌套 object javascript

[英]loop through nested object javascript

我正在嘗試遍歷以下嵌套的 object 並獲得如下所示的 output:

const preference = {
    "ethnicity": {
        "value": "Gurung",
        "rank": 1
    },
    "occupation": {
        "value": "Banker",
        "rank": 2
    }
}

我試過以下:

let preferenceRank = {};
preference.map(pref => {
  preferenceRank[pref.rank] = pref; 
});

console.log(preferenceRank);

我收到此錯誤:

"TypeError: preference.map is not a function"...

需要Output:

{
  1: "ethnicity",
  2: "occupation",
}

您可以使用Object.entries一次獲取鍵和值(作為 arrays [key, value]的數組):

 const preference = { "ethnicity": { "value": "Gurung", "rank": 1 }, "occupation": { "value": "Banker", "rank": 2 } } const preferenceRank = {} for (const [key, { rank }] of Object.entries(preference)) { preferenceRank[rank] = key } console.log(preferenceRank)

(順便說一句,在您的代碼中使用map沒有任何意義,因為您沒有將數組映射到任何東西,並且您忽略了map的返回值。您可能想要forEach代替,或者就像我現在使用的那樣, for循環。)

您可以在 object 上使用.entries() function 到 map。

Object.entries(preference).reduce((out, [key, value]) => {
  out[value.rank] = key;
  return out;
},{});

使用Object.entries()獲取 object 的鍵和值的數組。 然后你可以循環過去。

如果為副作用而執行循環,則使用forEach ,而不是使用回調 function 返回的值。

 const preference = { "ethnicity": { "value": "Gurung", "rank": 1 }, "occupation": { "value": "Banker", "rank": 2 } } let preferenceRank = {}; Object.entries(preference).forEach(([pref, {rank}]) => { preferenceRank[rank] = pref; }); console.log(preferenceRank);

您可以 map 條目並構建一個新的 object。

 const preference = { ethnicity: { value: "Gurung", rank: 1 }, occupation: { value: "Banker", rank: 2 } }, result = Object.fromEntries(Object.entries(preference).map(([k, { rank }]) => [rank, k]) ); console.log(result);

這將起作用。

const preferenceRank = {};
Object.keys(preference).forEach((key) => {
  preferenceRank[preference[key]['rank']] = preference[key]['value'];
});

console.log(preferenceRank);

您可以通過鍵 map 並將排名/鍵對象添加到結果對象。

 const preference = { "ethnicity": { "value": "Gurung", "rank": 1 }, "occupation": { "value": "Banker", "rank": 2 } } let res= {}; Object.keys(preference).map((el,key) => { res[preference[el].rank] = el; }); console.log(res);

map 僅適用於 arrays,您正在處理 object,您可以使用對象的 Z34D1F91FB2E514B8576FABA 的 7 個鍵

Object.keys(preference)

這將向您返回數組中的 object 鍵,如下所示 ["ethnicity","occupation"]

然后你可以通過它 map 如果你想要並做你的代碼

const preference = { “種族”:{ “價值”:“Gurung”, “排名”:1 }, “職業”:{ “價值”:“銀行家”, “排名”:2 } } console.log({。 ..Object.keys(偏好)})

暫無
暫無

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

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