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