Ответ 1
Объяснение
Это связано с тем, что Underscore предоставляет функциональные концепции JavaScript, и одна из ключевых концепций функционального программирования Referential Transparency.
По сути, функции не имеют побочных эффектов и всегда будут возвращать один и тот же результат для данного входа. Другими словами, все функции pure.
Удаление элемента из массива действительно будет предсказуемым результатом для данного ввода, но результатом будет побочный эффект, а не возвращаемое значение. Таким образом, деструктивные функции не вписываются в функциональную парадигму.
Решение
Правильный способ удаления значений из массива в Underscore уже подробно обсуждался в Qaru здесь. В качестве примечания, при использовании without
, reject
или filter
, если вы хотите удалить только один экземпляр элемента из массива, вам нужно будет однозначно идентифицировать его. Итак, следующим образом:
arr = _.without(arr, 5);
вы удалите все экземпляры 5
из arr
.