Как установить значение для всех элементов в массиве?

Например, у меня есть массив: ["chin","eng","maths"]

Я хочу установить его на {"chin" :true,"eng":true,"maths":true}

И подтолкнуть к пожару как ребенок.

enter image description here

0
Ziv Cheung 29 Май 2019 в 21:42

2 ответа

Лучший ответ

Самый простой способ - пройти по массиву с помощью for...of и добавьте каждый ключ к объекту:

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

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

console.log(output)

Другой вариант - создать двумерный массив записей пары ключ-значение, используя map. Затем используйте Object.fromEntries() создать объект

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

console.log(output)
1
adiga 29 Май 2019 в 18:59

Одним из возможных подходов является использование 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}), {});
4
Shidersz 29 Май 2019 в 18:57
56366723