arrays - 如何循环像forEach这样的不可变列表?

标签 arrays dictionary immutable.js

我想遍历不可变 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');
  }
});

最佳答案

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

那么你的代码没有副作用。

关于arrays - 如何循环像forEach这样的不可变列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692999/

相关文章:

c++ - 第二次将 map 插入 vector 失败

immutable.js - immutablejs mergeWith 对象但覆盖新列表

javascript - 数组中的所有对象都会受到影响

python - 列表到词典

java - Java中通过数组接受输入

python - 集合元素的组合

javascript - immutable.js #get 如何工作?

javascript - 如何使用 Immutable JS Map.setIn 在 Map 中创建深度嵌套列表?

c - 在 C 中使用嵌套循环查找数组中的三个相同数字

C - fprintf() & printf() 删除数组元素内存