Tengo un objeto que se ve así:
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;
He lodash
instalado en mi aplicación para otras cosas. ¿Hay una manera eficiente de usar lodash
para eliminar la entrada: {"subTopicId":2, "number":32}
del obj
objeto?
¿O hay una forma de JavaScript para hacer esto?
javascript
arrays
object
lodash
Samantha JT Star
fuente
fuente
splice
( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) para eliminar el elemento de una listaresult = _.pull(arr, value)
Esto eliminaría todos los valores coincidentes de la lista.Respuestas:
Como Lyyons señaló en los comentarios, una forma más idiomática y descarada de hacer esto sería usar
_.remove
, asíAdemás de eso, puede pasar una función de predicado cuyo resultado se utilizará para determinar si el elemento actual debe eliminarse o no.
Alternativamente, puede crear una nueva matriz filtrando la anterior
_.filter
y asignarla al mismo objeto, de esta maneraO
fuente
_.filter
versión._.filter
devuelve un elemento si el predicado es verdadero. Su implementación devolverá todos los elementos no deseados en lugar de aquellos que desea conservar_.reject
lugar de_.filter
usar el mismo predicado. ¡Mira mi respuesta para más detalles!Solo usa vanilla JS. Puede usar
splice
para eliminar el elemento:Manifestación
fuente
Is there an efficient way to use _lodash to delete
puedes hacerlo con
_pull
.verifique la referencia
fuente
_.pull
utiliza la igualdad estricta para las comparaciones, es decir, === . Dos objetos planos diferentes nunca se compararán como iguales por===
(o por==
si acaso). Por lo tanto, su código anterior nunca eliminará ningún elemento de la matriz._.remove
simplemente enjuaga la matriz.Ahora puede usar _.reject que le permite filtrar en función de lo que necesita deshacerse, en lugar de lo que necesita conservar.
a diferencia
_.pull
o_.remove
que solo funciona en matrices,._reject
está trabajando en cualquierCollection
fuente
Hay cuatro formas de hacer esto, como sé
El primero:
El segundo es:
De esta manera, la matriz será mutada.
El tercero es:
El último es:
Estoy aprendiendo
lodash
Responda para hacer un registro, para que pueda encontrarlo más tarde.
fuente
reject
Además de la respuesta @thefourtheye, usando predicado en lugar de funciones anónimas tradicionales:
O
fuente
lodash y mecanografiado
fuente
Aquí está la función lodash simple con matriz y eliminarla con el número de índice.
fuente