簡體   English   中英

從數組向對象添加值

[英]Add values to object from an Array

我在根據現有數組創建對象列表時遇到問題。

鑒於我有一個空對象:

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}), {})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM