Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to loop through Immutable List like forEach?

I would like to loop through Immutable List, I used List.map to do it, it can be worked, but not good. is there are a better way? Because I just check each element in array, if the element match my rule, I do something, just like Array.forEach, I don't want to return anything like Array.map.

for example, it is my work now:

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');
  }
});
like image 466
Seven Lee Avatar asked Jun 08 '16 04:06

Seven Lee


1 Answers

The method List.forEach exists for Immutable.js lists.

However, a more functional approach would be using the method List.find as follows:

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')

Then your code doesn't have side-effects.

like image 53
Mateus Zitelli Avatar answered Sep 18 '22 14:09

Mateus Zitelli