Javascript 如何以JS的方式处理不可变的数组

Javascript 如何以JS的方式处理不可变的数组,javascript,reactjs,immutability,Javascript,Reactjs,Immutability,我想知道如何联系不可变的数组。假设我从数组list=[4,1]开始,然后从动作响应接收数组,比如items=[5,2,6]。我如何确定数组的结果是[4,1,5,2,6],并且该操作是不可变的 奖金:如何覆盖具有相同id的项目(不可变方式)?让我们想象一下,这是存储在我们的数组books=[{'id':1,'title':'Cool story'},{'id':2,'title':'Bad story'}]。需要覆盖书籍的其他数组(上次从API同步)otherArray=[{'id':3,'tit

我想知道如何联系不可变的数组。假设我从数组
list=[4,1]
开始,然后从动作响应接收数组,比如
items=[5,2,6]
。我如何确定数组的结果是
[4,1,5,2,6]
,并且该操作是不可变的


奖金:如何覆盖具有相同id的项目(不可变方式)?让我们想象一下,这是存储在我们的数组
books=[{'id':1,'title':'Cool story'},{'id':2,'title':'Bad story'}]
。需要覆盖书籍的其他数组(上次从API同步)
otherArray=[{'id':3,'title':'Super story'},{'id':1,'title':'Very cool story'}]
。所以结果应该是
[{'id':2,'title':'Bad story'}],{'id':3,'title':'Super story'},{'id':1,'title':'Very cool story'}]

听起来您实际上要求在不改变现有实例的情况下连接数组


如中所述,
concat()
方法可以做到这一点。

尽管如前所述,内置的方法
.concat()
将解决您的问题,但您可能希望查看。特别是,奖金问题可以通过
解决。unionBy(otherArray,books,“id”)
通过ES6可以使用解构:

const array1 = ["Banana","Apple"];
const array2 = ["Pineapple", "Peach"];
const array3 = [...array1, ...array2];
arr1.推送(…arr2)


“奖金”不是。每个问题问一个问题,而不是两个。如果您有第二个问题,请单独提问(当然,在做了彻底的研究之后)。“我如何用相同的id覆盖项目(不可变的方式)?”您没有。您可以在其中一个插槽中创建一个具有不同值的新数组。这比大多数现代用例的公认答案要好