У меня есть объект, который выглядит так:
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?
javascript
arrays
object
lodash
Саманта JT Star
источник
источник
splice
( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ), чтобы удалить элемент из спискаresult = _.pull(arr, value)
Это удалит все совпадающие значения из списка.Ответы:
Как отмечалось в комментариях lyyons, более идиоматичным и хитрым способом сделать это было бы использовать
_.remove
, как этоКроме того, вы можете передать функцию предиката, результат которой будет использоваться для определения необходимости удаления текущего элемента.
В качестве альтернативы, вы можете создать новый массив, отфильтровав старый
_.filter
и присвоив его тому же объекту, например такИли
источник
_.filter
версией._.filter
возвращает элемент, если предикат верен. Ваша реализация вернет все нежелательные элементы вместо тех, которые вы хотите сохранить_.reject
вместо того_.filter
же предиката. Проверьте мой ответ для более подробной информации!Просто используйте ванильный JS. Вы можете использовать
splice
для удаления элемента:демонстрация
источник
Is there an efficient way to use _lodash to delete
Вы можете сделать это с
_pull
.проверьте ссылку
источник
_.pull
используется строгое равенство, то есть === . Два разных простых объекта никогда не будут сравниваться как равные===
(или по==
этому вопросу). Таким образом, ваш код выше никогда не удалит какие-либо элементы из массива._.remove
просто сбрасывает массив.Теперь вы можете использовать _.reject, который позволяет вам фильтровать на основе того, от чего вам нужно избавиться, а не того, что вам нужно сохранить.
в отличие от
_.pull
или ,_.remove
что только работа над массивами,._reject
работает на любойCollection
источник
Есть четыре способа сделать это, как я знаю
Первый:
Второй:
Таким образом, массив будет видоизменяться.
Третий:
Последний из них:
Я изучаю
lodash
Ответьте, чтобы сделать запись, чтобы я мог найти ее позже.
источник
reject
В дополнение к ответу @thefourtheye, используя предикат вместо традиционных анонимных функций:
ИЛИ
источник
Лодаш и машинопись
источник
Вот простая функция lodash с массивом и удаление ее с индексным номером.
источник