Если вы хотите удалить объект из первого массива, которого нет во втором массиве - PullRequest
0 голосов
/ 23 октября 2018

Если вы хотите удалить более одного объекта из первого массива «arrayOne», которого нет во втором массиве «arrayTwo».Это просто предложение, как я.Если у вас есть другой способ, пожалуйста, дайте мне знать.

let arrayOne = [{
          id: 1
        }, {
          id: 2
        }, {
          id: 3
        }]
        let arrayTwo = [{
          id: 2
        },{
          id: 3
        }]

for (var index = arrayOne.length; index--;) {
if (!arrayTwo.find(y => y.id === arrayOne[index].id)) {
  arrayOne.splice(arrayOne.findIndex(z => z.id === arrayOne[index].id), 1)
  console.log("After splice", arrayOne)
}

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

использовать Array.some() внутри Array.filter()

let arrayOne = [{ id: 1 }, { id: 2 }, { id: 3 }] ;
let arrayTwo = [{ id: 2 }];

const result = arrayOne.filter(obj1 => !arrayTwo.some(obj2 => obj1.id === obj2.id));

console.log('final array : ', result);
0 голосов
/ 23 октября 2018

Вы также можете использовать Set для хранения идентификаторов элементов arrayTwo, а затем filter для извлечения только тех элементов arrayOne, которые также присутствуютв arrayTwo:

let arrayOne = [{
  id: 1
}, {
  id: 2
}, {
  id: 3
}];

let arrayTwo = [{
  id: 2
}];

let arrayTwoSet = new Set(arrayTwo.map(e => e.id));
console.log(arrayOne.filter(e => arrayTwoSet.has(e.id)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...