簡體   English   中英

將 javascript 數組值轉換為具有默認值的 object 鍵

[英]Convert javascript array values to object keys with a default value

我是玩 javascript 並做出反應的初學者。 我遇到的問題是我有一個由字符串組成的數組,現在我想將這些字符串轉換為 object 中的鍵,這樣我就可以給它們一個值。

換句話說:我有["panel1", "panel2"]並且我想將其轉換為{"panel1":false,"panel2":false}

經過數小時的搜索,我設法想出了一個可行的解決方案:

 const names = ["panel1", "panel2"] var initialState = {}; Object.keys(names).forEach((name) => initialState = {...initialState, [names[name]]: false }) console.log(JSON.stringify(initialState))

...但是像這樣循環 function 以動態擴展 object 似乎非常不雅。 有什么更好的方法來做到這一點? 請注意,我需要我的 object 與數組的順序相同。

yoru 代碼的問題在於Object.keys(names)的結果是數組["0", "1"] (數組的),而不是名稱。

我會使用for-of循環:

const initialState = {};
for (const name of names) {
    initialState[name] = false;
}

或者如果你不能使用 ES2015+ 的特性,一個for循環:

var initialState = {};
for (var i = 0; i < names.length; ++i) {
    initialState[names[i]] = false;
}

Another approach is to use map to create an array of [name, value] arrays from your names array, then create the object using Object.fromEntries :

const initialState = Object.fromEntries(names.map(name => [name, false]));

map來自 ES5,而Object.fromEntriees是相當新的,但很容易為舊環境填充。

您可以使用Array.prototype.reduce優雅地執行此操作:

 const names = ["panel1", "panel2"] initialState = names.reduce((acc, name) => { acc[name] = false; return acc; }, {}); console.log(JSON.stringify(initialState))

暫無
暫無

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

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