gpt4 book ai didi

javascript - 将 javascript 数组值转换为具有默认值的对象键

转载 作者:行者123 更新时间:2023-12-02 16:42:05 31 4
gpt4 key购买 nike

我是一个玩 javascript 和 React 的初学者。我遇到的问题是我有一个由字符串组成的数组,现在我想将这些字符串转换为对象中的键,这样我就可以给它们一个值。

换句话说:我有 ["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))

...但是像这样循环一个函数来动态扩展对象看起来很不优雅。这样做的更好方法是什么?请注意,我需要我的对象与数组的顺序相同。

最佳答案

你代码的问题在于 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;
}

另一种方法是使用 mapnames 数组创建一个 [name, value] 数组,然后使用 Object.fromEntries 创建对象:

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

map 来自 ES5,而 Object.fromEntriees 很新,但很容易为旧环境填充 polyfill。

关于javascript - 将 javascript 数组值转换为具有默认值的对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444209/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com