@Nivaech

Как удалить из объекта ненужные ключи?

Есть два объекта
const obj1 = {152: true, 153: true, 154: true;} 
const obj2 = {152: true, 153: true, 154: true, 2553: true, 2554: true, 2555: true}


Нужно проверить, есть ли в obj2 ключи из obj1 , и если есть - удалить их, чтобы в итоге было так:
const obj2 = {2553: true, 2554: true, 2555: true}

Номерные ключи меняются динамически (это айди элементов), поэтому привязываться к номеру нельзя. Как это можно сделать?
  • Вопрос задан
  • 804 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.keys(obj1).forEach(n => delete obj2[n]);

или, если надо собрать новый объект вместо изменения исходного:

Object.fromEntries(Object.entries(obj2).filter(n => !obj1.hasOwnProperty(n[0])))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
kocherman
@kocherman
const obj1 = {152: true, 153: true, 154: true}; 
const obj2 = {152: true, 153: true, 154: true, 2553: true, 2554: true, 2555: true};
const obj1keys= [...Object.keys(obj1)];
const obj2keys = [...Object.keys(obj2)];
const obj2keyFilter = obj2keys.filter(key=>obj1keys.includes(key));
obj2keyFilter.forEach(key => delete obj2[key]);
console.log(obj2);
Ответ написан
Комментировать
@askhat
Immutable
Object.entries(obj2).reduce((acc, [k,v]) => obj1.hasOwnProperty(k) ? acc : ({ ...acc, [k]: v }), {})
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы