Почему в Immutable.js нет опции «удалить по значению»? - PullRequest
0 голосов
/ 01 мая 2018

В настоящее время я изменяю состояние приложения Redux на использование структур данных Immutable.js. Я вижу, что Immutable.js List не имеет метода удаления по значению (например, Lodash's .pull), поэтому вы должны использовать старомодный .indexOf.

Зачем нам нужно:

let list = List(['a', 'b']);
let aList = list.delete(list.indexOf('b'));

... когда мы могли бы иметь, например:

let list = List(['a', 'b']);
let aList = list.deleteByValue('b');

Есть ли в шаблонах дизайна или неизменности концепции Иммутибля концепция, которая будет противоречить этому методу? Или это так просто, как запрос функции, которого не было?

Обратите внимание, что я не пытаюсь стонать о функциях, просто немного лучше разбираюсь в дизайне фреймворка.

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Как уже упоминалось в некоторых комментариях, filter выполняет то, что вы хотите. Это функция для удаления значений из коллекции на основе значения. Добавление deleteValue на самом деле не очень поможет расширить библиотеку, и на самом деле это просто раздувание API.

Но по этой логике разве API не раздувается .delete () ...?

Да.

Но одна из вещей, которую пытается сделать Immutable.js, - это создать симметрию между его API и встроенными структурами данных JavaScript, например, Map#delete. Встроенные типы не имеют такого метода deleteValue, поэтому у Immutable.js меньше мотивации для включения этой функции.

Я считаю, что это также причина того, что у нас есть indexOf, который может быть полностью заменен на findIndex.

Отказ от ответственности: я не являюсь автором Immutable.js, поэтому не могу с уверенностью говорить об их решениях. Это только мое понимание сделанного выбора.

...