如何以不可变的方式连接数组 JS

IT技术 javascript reactjs immutability
2021-05-01 22:09:40

我想知道如何联系不可变的数组。让我们想象一下我从数组开始list = [4,1],然后我从动作响应中接收数组,就像这样items = [5,2,6]我如何 concant 结果是[4,1,5,2,6]并且该操作不可变的数组

奖励:如何覆盖具有相同 id 的项目(不可变方式)?让我们想象一下我们在 store 中的数组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'}]

4个回答

使用ES6,您可以使用解构:

const array1 = ["Banana","Apple"];
const array2 = ["Pineapple", "Peach"];
const array3 = [...array1, ...array2];

Javascript 没有不可变类型。

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

正如文档中明确指出的那样,该concat()方法就是这样做的。

虽然如前所述,内置方法.concat()可以解决您的问题,但您可能希望查看Lodash 库特别是,奖金问题可以用 解决_.unionBy(otherArray, books, "id")