如何在给定索引处将所有元素从一个不可变列表插入到另一个列表中

时间:2017-07-14 14:11:04

标签: javascript pagination redux immutable.js

我需要将数组(纯JS)的内容插入到给定索引的不可变List中。

我有一个像[a,b,c,d,e]这样的列表,它代表服务器上索引0 - 4的ID。然后我获取一个数组[j,k,l,m,n](代表索引9 - 14的id')。我想合并两个列表,以便我有:

[a,b,c,d,e,undefined,undefined,undefined,undefined,undefined,j,k,l,m,n]

可以执行oldList.insert(9, nextList),但这会将整个nextList数组嵌入到索引9中而不是它在索引9 - 14处的内容< / p>

我需要类似ES6 / Next传播操作符的东西..

const ids = oldList.insert(10, ...next_ids)

但这是不可能的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是我目前的解决方案,但有兴趣知道是否有更简洁的方式..

const list = List( ['a', 'b', 'c', 'd', 'e'] ) // Indices 0 - 5
const fetchResponse = ['j', 'k', 'l', 'm', 'n'] // Indices 9 - 14
const nextList = List()
  .setSize(9) // The start index of fetched results
  .concat(List(fetchResponse))
  .mergeWith((next, last) => next || last, list) // Take new value at index if defined, otherwise old

console.log(nextList.toJS())
  -> ['a', 'b', 'c', 'd', 'e', null, null, null, null, null, 'j', 'k', 'l', 'm', 'n']