![](/img/trans.png)
[英]How do I create an array of strings from an object where the values of individual keys are separate arrays of strings?
[英]How can I create an object mapping from an array of strings?
我偶然发现了一些应该很容易的事情,但我似乎无法做到。
我有一个字符串数组,我想映射它以创建一个像这样的对象:
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
}}
)
)
只需要用它做一个对象,不应该太难
.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);
您可以使用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)
map
只会返回一个数组。 您的预期输出是一个对象。 没有必要让事情变得过于复杂——改用一个简单的循环。
const list = ['january', 'february', 'march', 'april', 'may']; const myState = {}; for (const month of list) { myState[month] = { selected: false, year: 2022 }; } console.log(myState);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.