Как перемещаться по неизменяемому списку, например, для каждого?

Я хотел бы пройти через Immutable List, я использовал List.map для этого, он может работать, но не очень хорошо. есть ли лучший способ? Поскольку я просто проверяю каждый элемент в массиве, если элемент соответствует моему правилу, я что-то делаю, как и Array.forEach, я не хочу возвращать что-либо вроде Array.map.

например, это моя работа сейчас:

let currentTheme = '';
let selectLayout = 'Layout1';
let layouts = List([{
  name: 'Layout1',
  currentTheme: 'theme1'
},{
  name: 'Layout2',
  currentTheme: 'theme2'
}])


layouts.map((layout) => {
  if(layout.get('name') === selectLayout){
     currentTheme = layout.get('currentTheme');
  }
});

Ответ 1

Метод List.forEach существует для списков Immutable.js.

Однако более функциональный подход будет использовать метод List.find следующим образом:

let selectLayoutName = 'Layout1';
let layouts = List([Map({
  name: 'Layout1',
  currentTheme: 'theme1'
}),Map({
  name: 'Layout2',
  currentTheme: 'theme2'
})])


selectLayout = layouts.find(layout => layout.get('name') === selectLayoutName);
currentTheme = selectLayout.get('currentTheme')

Тогда ваш код не имеет побочных эффектов.