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

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

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

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

И нажмите на firebase в детстве.

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

Вы имеете в виду изменение ["chin","eng","maths"] на {"chin" :true,"eng":true,"maths":true} как структуру? Или как струна? Простой факт изменения [] на {} означает другую структуру. ([] = массив, {} = объект)

k3llydev 29.05.2019 21:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Один из возможных подходов — использовать Массив.уменьшить() следующим образом:

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

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

console.info(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}), {});

Создает ли это новый объект на каждой итерации? Кажется дорогим.

James 29.05.2019 20:48

Вероятно, так же дорого, как делать то, что вы уже делаете, не используя reduce

Isaac Vidrine 29.05.2019 20:49

«В случае производительности» - да, когда решение короче, работает лучше и так же читабельно, я думаю, это должен быть основной ответ.

James 29.05.2019 20:53

@ Джеймс, да, ты прав, я добавил лучшую версию, не распространяясь.

Shidersz 29.05.2019 20:53
Ответ принят как подходящий

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

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

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

console.info(output)

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

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

console.info(output)

Другие вопросы по теме