如何为javascript数组中的所有对象设置值?

时间:2019-05-29 18:42:14

标签: javascript arrays firebase

如何为数组中的所有项目设置值?

例如,我有一个数组:["chin","eng","maths"]

我想将其设置为{"chin" :true,"eng":true,"maths":true}

并以小孩子的身份推向火力基地。

enter image description here

2 个答案:

答案 0 :(得分:4)

一种可能的方法是像这样使用Array.reduce()

const input = ["chin", "eng", "maths"];

let obj = input.reduce((acc, item) => (acc[item] = true, acc), {});

console.log(obj);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

或者,您可以使用spreading,但会降低性能:

let obj = input.reduce((acc, item) => ({...acc, [item]: true}), {});

答案 1 :(得分:1)

最简单的方法是使用for...of遍历数组并将每个键添加到对象:

const keys = ["chin", "eng", "maths"],
      output = {};

for (const key of keys) {
  output[key] = true;
}

console.log(output)

另一个选择是使用map创建键值对条目的2D数组。然后使用Object.fromEntries()创建对象

const keys = ["chin","eng","maths"]
const output = Object.fromEntries(keys.map(k => [k, true]))

console.log(output)