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

时间:2016-12-18 15:04:34

标签: 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, '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 个答案:

答案 0 :(得分:6)

Javascript没有不可变类型。

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

正如documentation中明确指出的那样,concat()方法可以做到这一点。

答案 1 :(得分:1)

虽然如上所述,内置方法.concat()可以解决您的问题,但您可能希望查看Lodash library。特别是,可以使用_.unionBy(otherArray, books, "id")解决红利问题。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)