不可变的JS:在对象内的数组内的对象内设置属性

时间:2019-12-23 21:17:57

标签: typescript immutable.js

假设我有一个这样的对象:

const document = {
  items: [
    { notes: ['a', 'b'] },
    { notes: ['y', 'z'] },
  ]
}

我想使用Immutable JS在项目上设置notes数组。基本上是一成不变的,但却是一成不变的。

这是我正在尝试的:

const immutableDocument = Immutable.fromJs(document);
immutableDocument.setIn(['items[index]', 'notes'], [newNote, ...oldNotes]);

这是行不通的,而且我在文档中看不到任何有关通过不可变对象中的某个索引(或谓词)访问数组的任何内容。

我该怎么做?

更新: 基于the answer on this question,我也尝试了immutableDocument.setIn(['items', index, 'notes'], [newNote, ...oldNotes]),但这似乎也不起作用。

1 个答案:

答案 0 :(得分:0)

这有效:

const newDocument = Immutable.setIn(immutableDocument, ['items', index, 'notes'], [newNote, ...oldNotes]);

不能完全确定另一个人为什么不工作based on the docs,但是,嘿,我继续。