Immutable.js - 是否可以在任意位置将元素插入列表?

And*_*eyM 20 immutable.js

也许这是一个愚蠢的问题,但无论如何.如何在Immutable.js List的任意位置插入元素?

nem*_*esv 32

您正在寻找splice方法:

Splice通过用新值替换此Iterable的区域来返回新的索引Iterable.

splice(index: number, removeNum: number, ...values: any[])

您可以在哪里指定index,如果您编写0,removeNum只需在给定位置插入值:

var list = Immutable.List([1,2,3,4]);
console.log(list.toJS()); //[1, 2, 3, 4]
var inserted = list.splice(2,0,100);
console.log(list.toJS()); //[1, 2, 3, 4]
console.log(inserted.toJS()); //[1, 2, 100, 3, 4] 
Run Code Online (Sandbox Code Playgroud)

演示JSFiddle.

  • 我想任何使用名为Immutable.js的库的人都已经熟悉了. (19认同)
  • 也许重要的是要提到不变性意味着您从表达式创建一个新数组而不是修改现有数组,并且这通常是函数式编程的关键部分. (2认同)

小智 14

值得指出的是,你也可以使用插入方法,它实际上是同义词,list.splice(index, 0, value)但它感觉更直观,并大大提高了可读性.

const myImmutableList = Immutable.fromJS(['foo', 'baz'])
const newList = myImmutableList.insert(1, 'bar')

console.log(newList.toJS()) //["foo", "bar", "baz"]
Run Code Online (Sandbox Code Playgroud)