Как удалить свойства одного объекта, которых нет в другом объекте - PullRequest
1 голос
/ 15 июня 2019

Скажем, у меня есть два объекта, подобные приведенным ниже.

let a = {Friday: [1, 2 3], Saturday: [2,4,2], Sunday: [1,4]}
let b = {Friday: [], Saturday: []}

Мне нужен какой-то способ удаления всех пар ключ-значение из a, которых нет в b, поэтому результат будет:

{Friday: [1, 2 3], Saturday: [2,4,2]}

Ответы [ 4 ]

3 голосов
/ 15 июня 2019

просто используйте for loop и delete:

  • Перебрать все свойства в
  • проверьте, существует ли свойство в b, если оно отсутствует, просто удалите свойство из a.

let a = {Friday: [1, 2, 3], Saturday: [2,4,2], Sunday: [1,4]};
let b = {Friday: [], Saturday: []};

for(let key in a){
  if(!(key in b))
    delete a[key];
}
console.log(a);
2 голосов
/ 15 июня 2019
  • Получите ключи b, используя Object.keys
  • . Используйте reduce() для этого, чтобы построить объект, значения которого будут от a

let a = {Friday: [1, 2, 3], Saturday: [2,4,2], Sunday: [1,4]};
let b = {Friday: [], Saturday: []}

let res = Object.keys(b).reduce((ac,k) => (ac[k] = a[k],ac),{});

console.log(res)

Если вас смущает один вкладыш.Ниже приведена более понятная версия.

let res = Object.keys(b).reduce((ac,k) => {
   ac[k] = a[a];
   return ac;
},{});
1 голос
/ 15 июня 2019

Вы можете получить все ключи a, удалить из этого ключи b и удалить с него свойства a.

var a = { Friday: [1, 2, 3], Saturday: [2, 4, 2], Sunday: [1, 4] },
    b = { Friday: [], Saturday: [] };

Object
    .keys(a)
    .filter(k => !(k in b))
    .forEach(Reflect.deleteProperty.bind(null, a));

console.log(a);
0 голосов
/ 15 июня 2019

Самый простой способ сделать это с помощью для цикла и , если оператор

// Removes the pairs from A that are not in B
for (let key in a) if (!b[key]) delete a[key]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...