javascript - 如何将新项目推送到 immutableJS 中的深层嵌套记录中

标签 javascript arrays list immutable.js

我正在尝试将新项目推送到深度嵌套的不可变记录中。

  const i = Immutable.Record({
    nested: new (Immutable.Record({
      someKey: [{id:1,name:'adam'}, {id:2,name:'steve'}],
    })),
  });
  const myMap = new i;
  const myNewMap = myMap.updateIn(['nested', 'someKey'], (fav)=>    fav.push({id:3,name:'dan'}));

  console.log(myNewMap.toJS());

我期望的是用新值更新嵌套列表,但实际输出是

  [object Object] {
  nested: [object Object] {
    someKey: 3
    }
  }

所以我做错了什么,那么我该如何用新值更新记录呢?

这是示例的jsbin http://jsbin.com/nipolimuyu/edit?html,js,console

最佳答案

您在传递给 updateIn 的函数中缺少 return 语句(请注意 Array.push 不返回结果数组!)。应该是:

const myNewMap = myMap.updateIn(
  ['nested', 'someKey'], 
  (fav) => {
    fav.push({id:3,name:'dan'})
    return fav
  })

关于javascript - 如何将新项目推送到 immutableJS 中的深层嵌套记录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778858/

相关文章:

javascript - 通过单击从数据库中删除特定条目

c++ - 段错误 - 已使用新的和删除的。在运行时正在创建大量数组(无界数组)

javascript - 下载大型 CSV 文件 - href 无意中 chop 结果

python - 操作 numpy 数组

c++ - 迭代器 - vector::iterator 和 array::iterator 的重载函数

python - 将字符串分割成连续、重叠的单词列表的最Pythonic方法是什么

python - 检查对象是否在 pyshark 给出的列表中

list - Haskell - 映射列表列表

javascript - 如何替换\n字符串中的新行字符,以便 <p> 标记可以显示新行

javascript - 获取给定 URL 的网页标题