我在一个对象内,在一个数组内有一个嵌套的字符串数组。我试图拉出嵌套的字符串并将每个元素作为键放置在对象中,并且每个键的所有值都将设置为0,而无需对任何内容进行硬编码
const groups = [{name: group1, values: ['value1']},{name: group2, values: ['value2', 'value'}]
我正在尝试获取'value1'
,'value2'
和'value3'
,并将它们作为键放置到对象中-因此,它应该看起来像这样:
const obj = {'value1': 0,'value2': 0,'value3': 0,}
我有这个给我一个值的数组,但是我不确定如何从数组中取出它们并将它们作为键放在对象中。
const allGroups = groups.flatMap(({ values }) => values,);
使用forEach
循环,您的对象格式错误
const groups = [{name: 'group1', values: ['value1']},{name:' group2', values: ['value2', 'value3']}]
var obj={};
groups.forEach(e=>{
e.values.forEach(x=>obj[x]=0)
})
console.log(obj)
您可以使用Object.fromEntries
Object.fromEntries
您走在正确的轨道上,flatMap应该会为您提供一个包含值的渐隐数组。之后,您只需要使用const groups = [{name: 'group1', values: ['value1']},{name: 'group2', values: ['value2', 'value3']}]
const allGroups = Object.fromEntries(groups.flatMap(({
values
}) => values.map(v => [v, 0])))
console.log(allGroups)
创建对象。
这里是您如何以一种实用的方式进行的操作:
您可以使用const groups = [
{ name: 'group1', values: ['value1'] },
{ name: 'group2', values: ['value2', 'value3'] }
];
let values = groups
.flatMap(group => group.values)
.reduce((acc, values) => {
acc[values] = 0;
return acc;
}, {});
console.log(values);
遍历每个对象,以创建单个结果为目标。在迭代中,您需要将reduce()
中的每个条目作为键添加到输出对象中,其值为values
。
0