如何将每个元素从数组中取出,并使每个元素成为对象中的键?

问题描述 投票:2回答:4

我在一个对象内,在一个数组内有一个嵌套的字符串数组。我试图拉出嵌套的字符串并将每个元素作为键放置在对象中,并且每个键的所有值都将设置为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,);
javascript arrays javascript-objects
4个回答
1
投票

使用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)

0
投票

您可以使用Object.fromEntries

Object.fromEntries

0
投票

您走在正确的轨道上,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)创建对象。

这里是您如何以一种实用的方式进行的操作:


0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.