ImmutableJS Набор не сплющенный

У меня есть следующий код:

Immutable.Set(['valor1', 'valor2', 'valor2', 'valor3', ['valor4', 'valor5']]).flatten().toJS();

Это не работает, как ожидалось, но возвращает, как это было введено. Если я буду рассматривать его как список, он будет работать как положено:

   Immutable.fromJS(['valor1', 'valor2', 'valor2', 'valor3', ['valor4', 'valor5']]).flatten().toJS(); // return flattened list

Что не так с функцией сглаживания при использовании с Set?

1 ответ

Решение

Что не так с функцией сглаживания при использовании с Set?

В этом нет ничего плохого. Кажется, у вас неправильное представление о том, как Set а также flatten Работа. Из документов:

Сглаживает только другие итерируемые, а не массивы или объекты.

Immutable.fromJS(...) глубоко преобразует значение в карты и списки, поэтому внутренний массив преобразуется в Immutable.Listи вот почему это работает. Функции конструктора не конвертируются глубоко, поэтому набор содержит массив (который не сплющен).

Другие вопросы по тегам