使用不可变 JS 更新映射列表中的一个键

Updating one key in list of maps using ImmutableJS

本文关键字:一个 不可变 JS 更新 列表 映射      更新时间:2023-09-26

Docs for immutable.js,缺乏描述性示例。有人可以解释一下,我如何在不可变JS中执行以下操作:

function isOdd (v) {
    return v % 2 === 0
}
var collection = [{a: 1, b: 2}, {a: 3, b: 7}, {a: 5, b: 6}];
collection.map(item => {
 if (isOdd(item.b))  {
   item.a = item.a * 2;
 }
 return item;
})

任何帮助都非常感谢。

const collection = Immutable.fromJS([{a: 1, b: 2}, {a: 3, b: 7}, {a: 5, b: 6}]);
const isOdd = a => b => b % 2 ? a : a * 2;  
collection
  .map(item => item
      .update('a', a => isOdd(a)(item.get('b'))))

检查此笔的控制台输出:http://codepen.io/anon/pen/Nxzdwe?editors=1012

所以这是我的版本:

const collection = Immutable.fromJS([{a: 1, b: 2}, {a: 3, b: 7}, {a: 5, b: 6}]);
console.log(
  collection    
    .map(item => {
      if (item.get('b') % 2 == 0) {
        return item.set('a', item.get('a') * 2)
      } else {
        return item;
      }
    }).toJS()
);