繁体   English   中英

Immutable.js在嵌套对象中推入数组

[英]Immutable.js Push into array in nested object

假设有一个对象:

const object = {
  'foo': {
    'bar': [1, 2, 3]
  }
}

我需要将4推送到object.foo.bar数组。

现在我这样做:

const initialState = Immutable.fromJS(object)
const newState = initialState.setIn(
  ['foo', 'bar', object.foo.bar.length],
  4
)
console.log(newState.toJS())

但我真的不喜欢它,因为我需要在路径中使用object.foo.bar.length 在我的真实示例中,对象嵌套得更深,并且获取数组的长度看起来非常难看。 还有另一个更方便的方法吗?

这应该工作

initialState.updateIn(['foo', 'bar'], arr => arr.push(4))

参考文献:

我正在使用seamless-immutable ,当我向嵌套对象数组添加新项时,我收到此错误:

无法在Immutable数据结构上调用push方法。

我的数组仍然有push方法,但它不起作用。 解决方案是使用concat,更多关于#43的细节:

initialState.updateIn(['foo', 'bar'], arr => arr.concat([4]));

希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM