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