Как изменить значения ключей объекта, имеющего одно и то же значение, без мутаций, сохраняя при этом ссылку на неизмененные ключи одинаковыми в javascript? - PullRequest
2 голосов
/ 17 октября 2019

У меня есть такой объект:

const obj1 = {key1: value1, key2: value2, key3: value1}

Я хочу изменить значение всех ключей, имеющих значение value1 на value3:

// obj2
{key1: value3, key2: value2, key3: value3}

По сути, мойзначения являются другими объектами. Я не хочу создавать новые экземпляры неизменных значений. И я не хочу изменять исходный объект obj1.


РЕДАКТИРОВАТЬ

Моя причина в том, что сохранение ссылки на то же самое предотвратит ненужные повторные визуализации.
подробности см. В этом твите

Я не знаю, как привести пример, все, что я могу сказать, это то, что, если значение ключа нужно изменить, верните новое значение, иначе верните старое значение, не назначайте старое значение.

1 Ответ

3 голосов
/ 17 октября 2019

Вы можете получить записи, найти требуемое значение и заменить это значение. Затем создайте новый объект.

const
    source = { key1: 1, key2: 2, key3: 1 },
    search = 1,
    replace = 3,
    target = Object.fromEntries(Object
        .entries(source)
        .map(([k, v]) => [k, v === search ? replace : v])
    );

console.log(target);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...