Eu tenho um objeto que se parece com isso:
var obj = {
"objectiveDetailId": 285,
"objectiveId": 29,
"number": 1,
"text": "x",
"subTopics": [{
"subTopicId": 1,
"number": 1
}, {
"subTopicId": 2,
"number": 32
}, {
"subTopicId": 3,
"number": 22
}]
}
var stToDelete = 2;
Eu lodash
instalei no meu aplicativo para outras coisas. Existe uma maneira eficiente lodash
de excluir a entrada: {"subTopicId":2, "number":32}
do obj
objeto?
Ou existe uma maneira javascript para fazer isso?
javascript
arrays
object
lodash
Samantha JT Star
fonte
fonte
splice
( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) para remover o item de uma listaresult = _.pull(arr, value)
Isso removeria todos os valores correspondentes da lista.Respostas:
Como Lyyons apontou nos comentários, uma maneira mais idiomática e cansativa de fazer isso seria usar
_.remove
, assim:Além disso, você pode passar uma função predicada cujo resultado será usado para determinar se o elemento atual deve ser removido ou não.
Como alternativa, você pode criar uma nova matriz filtrando a antiga
_.filter
e atribuí-la ao mesmo objeto, como esteOu
fonte
_.filter
versão._.filter
retorna um elemento se o predicado for verdadeiro. Sua implementação vai devolver todos os elementos não desejados em vez daqueles que você quer manter_.reject
vez de_.filter
usar o mesmo predicado. Veja minha resposta para mais detalhes!Basta usar JS vanilla. Você pode usar
splice
para remover o elemento:Demo
fonte
Is there an efficient way to use _lodash to delete
você pode fazer isso com
_pull
.verifique a referência
fonte
_.pull
usa igualdade estrita para comparações, ou seja, === . Dois objetos simples diferentes nunca serão comparados como iguais por===
(ou por==
esse assunto). Portanto, seu código acima nunca removerá nenhum elemento da matriz._.remove
apenas libera a matriz.Agora você pode usar _.reject, que permite filtrar com base no que você precisa se livrar, em vez do que você precisa manter.
diferente
_.pull
ou_.remove
que só funcionam em matrizes,._reject
está trabalhando em qualquerCollection
fonte
Existem quatro maneiras de fazer isso como eu sei
O primeiro:
O segundo é:
Dessa maneira, o array será alterado.
O terceiro é:
O último é:
Estou aprendendo
lodash
Responda para fazer um registro, para que eu possa encontrá-lo mais tarde.
fonte
reject
Além da resposta @thefourtheye, usando o predicado em vez das funções anônimas tradicionais:
OU
fonte
lodash e datilografado
fonte
Aqui está a função lodash simples com array e excluindo-a com o número do índice.
fonte