удалить объекты с определенным ключом: значением из массива - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть массив объектов, и мне нужно использовать lodash для удаления некоторых из этих объектов с определенным ключом: значением, например:

[
{id:1,b:22},
{id:2,b:44},
{id:3,b:56},
{id:4,b:-29}
]

Мне нужно удалить весь объект с идентификатором 1 и3.

Я знаю путь ниже, но мне было интересно, есть ли более короткий путь:

    var array = [
    {id:1,b:22},
    {id:2,b:44},
    {id:3,b:56},
    {id:4,b:-29}
    ];

 _.remove(array, function(n) {
  return _.includes([ 1,3 ], n.id);
});

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать pullAllBy и предоставить элементы для удаления в качестве второго параметра.

let data = [{id:1,b:22},{id:2,b:44},{id:3,b:56},{id:4,b:-29}]

const result = _.pullAllBy(data, [{id:1},{id:3}], 'id')
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

Обратите внимание, что этот метод изменяет массив. Если вы не хотите этого, используйте _. DiffBy

Использование функций ES6 и стрелок + filter для получения значений, а не для преобразования в массив, также даст вам небольшую версию:

let data = [{ id: 1, b: 22 }, { id: 2, b: 44 }, { id: 3, b: 56 }, { id: 4, b: -29 }]

const result = data.filter(x => ![1,3].includes(x.id))
console.log(result)
...