Eu tenho uma matriz de objetos como este:
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
Como removo um específico com base em sua propriedade?
Por exemplo, como removeria o objeto de matriz com 'money' como a propriedade do campo?
javascript
jquery
arrays
object
properties
imperium2335
fonte
fonte
filter()
está disponível apenas para o Internet Explorer 9+filter()
cria uma nova matriz, o que é bom se você puder reatribuir a variável e saber que não há outras áreas do código que tenham referências a ela. Isso não funcionará se você precisar modificar especificamente o objeto original da matriz.Iterar através da matriz, e
splice
fora os que você não deseja. Para um uso mais fácil, itere para trás para que você não precise levar em consideração a natureza ativa da matriz:fonte
Digamos que você queira remover o segundo objeto por sua propriedade de campo.
Com o ES6, é tão fácil quanto isso.
fonte
splice
altera a matriz original, então o valor que você recebe é o item que foi removido, mas se você olhar novamente o item emmyArray
falta.Você pode usar o findIndex do lodash para obter o índice do elemento específico e depois emendá-lo.
Atualizar
Você também pode usar o findIndex () do ES6
fonte
myArray
aqui está uma variedade de objetos.Aqui está outra opção usando o jQuery grep. Passe
true
como o terceiro parâmetro para garantir que o grep remova itens que correspondam à sua função.Se você já está usando jQuery, não é necessário usar shim, o que pode ser útil em vez de usar
Array.filter
.fonte
No ES6, apenas uma linha.
:)
fonte
A seguir está o código se você não estiver usando o jQuery. Demo
Você também pode usar a biblioteca de sublinhado, que possui muitas funções.
O Underscore é uma biblioteca de cinto de utilidade para JavaScript que fornece grande parte do suporte à programação funcional
fonte
Elemento é um objeto na matriz. O terceiro parâmetro
true
significa que retornará uma matriz de elementos que falharão na lógica de sua função,false
significa que retornará uma matriz de elementos que falharão na sua lógica de função.fonte
Com base em alguns comentários acima abaixo, está o código de como remover um objeto com base no nome e no valor da chave
fonte
Usando a biblioteca lodash :
fonte
A solução de jAndy é provavelmente a melhor, mas se você não puder confiar no filtro, poderá fazer algo como:
fonte
Usando a biblioteca lodash, é simples, pois
fonte