javascript - 将值添加到数组中的对象

标签 javascript arrays object

我在基于现有数组创建对象列表时遇到问题。

假设我有一个空对象:

let data = {}

我想从现有数组中填充:

const list = ['somedata1', 'somedata2', 'somedata3']

我想根据提供的数组创建以下对象列表:

data = {
  somedata1: undefined,
  somedata2: [],
  somedata3: 0
}

所以我无法像这样访问或重新分配它们:

// Access
data.somedata1;

// Set new value
data.somedata2 = {subObject: true}

我尝试过使用Object.assignObject.fromEntries 的不同方法,但这个方法没有解决问题:

list.forEach(i => {
  data[i] = undefined
})

我希望是这样的列表:

data {
  somedata1: undefined,
  somedata2: undefined,
  somedata3: undefined
}

所以我可以像这样重新分配它们:

data.somedata1 = 1100
data.somedata2 = ['somevalues']
data.somedata3 = false

====更新====

所以为了让它工作,我必须返回一个分配,而不是仅仅分配对象。我不明白为什么会这样,如果有人能解释一下就完美了。

// WORKING: This function is return an assignment
list.forEach(item => data[item] = undefined)

// WORKING: This arrow function returns an assignment
list.forEach(item => {
  return data[item] = undefined
})

// NON-WORKING: This arrow function only assigns without RETURNing the value
list.forEach(item => {
  data[item] = undefined
})

最佳答案

如果你想将数组的值转换为另一个对象的键(它们的值是未定义的,你可以通过多种方式实现):

举两个例子

const list = ['somedata1', 'somedata2', 'somedata3']

// imperative code
const data = {};
list.forEach(elm => {
    data[elm] = undefined;
})

// or

// functional code
const newData = list.reduce((acc, cur) => ({...acc, [cur] : undefined}), {})

关于javascript - 将值添加到数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824664/

相关文章:

javascript - three.js 使用轨道控件获取相机位置

javascript - 如何使用 JQuery 在 Android 浏览器中禁用 'Paste'?

javascript - 让角色在 Canvas 内跳跃

javascript - 修改参数中对象的函数,而不仅仅是属性

javascript - Angular ng-repeat 不显示来自 Meteor.call 的数据

javascript - 如何将一个数组中的值添加到另一个数组

java - 在 logcat 中显示数组值

sql - 具有数组元素的数组类型的 PostgreSQL JOIN

c++ - 模板和静态变量

javascript - JS调用没有方法的对象时调用函数