Как я могу удалить элемент из списка, с помощью lodash?
у меня есть объект, который выглядит так:
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;
у меня есть _lodash используется в моем приложении для других вещей. Есть ли эффективный способ использовать _lodash для удаления записи:{"subTopicId":2, "number":32} С obj объект или есть способ javascript, чтобы сделать это?
5 ответов:
как указал Лионс в комментариях, более идиоматичным и лодаший способ сделать это было бы использовать
_.remove, такой_.remove(obj.subTopics, { subTopicId: stToDelete });кроме того, вы можете передать функцию предиката, результат которой будет использоваться для определения того, должен ли текущий элемент быть удален или нет.
_.remove(obj.subTopics, function(currentObject) { return currentObject.subTopicId === stToDelete; });
кроме того, вы можете создать новый массив, отфильтровав старый с помощью
_.filterи присвоить его тому же объекту, например этоobj.subTopics = _.filter(obj.subTopics, function(currentObject) { return currentObject.subTopicId === stToDelete; });или
obj.subTopics = _.filter(obj.subTopics, {subTopicId: stToDelete});
вы можете сделать это с помощью
_pull._.pull(obj["subTopics"] , {"subTopicId":2, "number":32});Регистрация ссылка
теперь вы можете использовать _.отклонить который позволяет фильтровать на основе того, что вам нужно избавиться, а не то, что вам нужно сохранить.
в отличие от
_.pullили_.removeкоторые работают только на массивах,._rejectработает на любомCollectionobj.subTopics = _.reject(obj.subTopics, (o) => { return o.number >= 32; });
В дополнение к @ thefourtheye ответ, используя вместо традиционных анонимных функций:
_.remove(obj.subTopics, (currentObject) => { return currentObject.subTopicId === stToDelete; });или
obj.subTopics = _.filter(obj.subTopics, (currentObject) => { return currentObject.subTopicId === stToDelete; });
Comments