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 lodashinstalado en mi aplicación para otras cosas. ¿Hay una manera eficiente de usar lodashpara eliminar la entrada: {"subTopicId":2, "number":32}del objobjeto?
¿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
_.filtery asignarla al mismo objeto, de esta maneraO
fuente
_.filterversión._.filterdevuelve un elemento si el predicado es verdadero. Su implementación devolverá todos los elementos no deseados en lugar de aquellos que desea conservar_.rejectlugar de_.filterusar el mismo predicado. ¡Mira mi respuesta para más detalles!Solo usa vanilla JS. Puede usar
splicepara eliminar el elemento:Manifestación
fuente
Is there an efficient way to use _lodash to deletepuedes hacerlo con
_pull.verifique la referencia
fuente
_.pullutiliza 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._.removesimplemente 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
_.pullo_.removeque solo funciona en matrices,._rejectestá trabajando en cualquierCollectionfuente
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
lodashResponda para hacer un registro, para que pueda encontrarlo más tarde.
fuente
rejectAdemá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