我偶然發現了一些應該很容易的事情,但我似乎無法做到。
我有一個字串陣列,我想映射它以創建一個像這樣的物件:
const monthesList = ['january', 'february', 'march', 'april', 'may']
const myState = monthesList.map(month => (
month: {selected: false, year: 2022}
)
)
我想要的是獲得以下物件:
myState ={
january:{
selected: false,
year: 2022
},
february:{
selected: false,
year: 2022
},
march:{
selected: false,
year: 2022
},
april:{
selected: false,
year: 2022
},
may:{
selected: false,
year: 2022
},
}
編輯:我剛剛找到了方法:
const myState = monthesList.map(month => (
{[month] : {
selected: false,
year: 2022
}}
)
)
只需要用它做一個物件,不應該太難
uj5u.com熱心網友回復:
該.map()方法回傳一個陣列,但您所追求的輸出是一個物件。您需要一些可以將鍵值對陣列(即:)轉換[key, value]為物件的東西。為此,我們有一個Object.fromEntries()方法,它接受一個鍵值對陣列,并從中構造一個物件,如下所示:
const monthesList = ['january', 'february', 'march', 'april', 'may'];
const myState = Object.fromEntries(monthesList.map(month => [
month, {selected: false, year: 2022}
]));
console.log(myState);
uj5u.com熱心網友回復:
您可以使用map生成一個陣列陣列,其中每個內部陣列中的值是月份名稱和物件;然后使用Object.fromEntries將其轉換為您想要的物件:
const monthesList = ['january', 'february', 'march', 'april', 'may']
const myState = Object.fromEntries(
monthesList.map(m => [m, {selected: false, year: 2022}])
)
console.log(myState)
uj5u.com熱心網友回復:
map只會回傳一個陣列。您的預期輸出是一個物件。沒有必要讓事情變得過于復雜——改用一個簡單的回圈。
const list = ['january', 'february', 'march', 'april', 'may'];
const myState = {};
for (const month of list) {
myState[month] = { selected: false, year: 2022 };
}
console.log(myState);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487951.html
標籤:javascript 数组 字典
