Задать вопрос
@hinie

Как сделать алгоритм добавления елементов?

Здравствуйте, есть массив строк["name0", "name1", "name2"]
Есть массив объектов
[{name:"name0"}, {name:"name1"}]
Как написать алгоритм который в случае несуществования в массиве обєктов какого-либо поля из массива строк добавит туда (в массив обєктов) что-то типа {name: "missedName"} (missedName - поле из массива строк которого не хватает)
Можно ли такое реализовать чем-то более оптимизированным чем пузыриком?
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Значения в массиве строк уникальны? Если нет, сколько надо добавлять объектов?

Сколько раз строка повторилась - столько новых объектов будет добавлено:

const names = new Set(objects.map(n => n.name));
strings.forEach(n => (names.has(n) || objects.push({ name: n })));

Два раза одно и то же не добавляем:

new Set(strings).forEach(function(n) {
  if (!this.has(n)) {
    objects.push({ name: n });
  }
}, new Set(objects.map(n => n.name)));

// или

for (const name of strings) {
  if (objects.every(n => n.name !== name)) {
    objects[objects.length] = { name };
  }
}

// или

objects.splice(0, objects.length, ...strings.reduce(
  (acc, n) => acc.set(n, acc.get(n) ?? { name: n }),
  new Map(objects.map(n => [ n.name, n ]))
).values());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы