数组1给数组2赋值后,用unshift更改数组2后,数组1也增加了同样的元素?

发布于 7 年前作者 naqian6483 次浏览最后编辑 7 年前来自 ask

代码如下:

    var shops2=[1,2,3]

    var shops1=shops2

    shops1.unshift("所有门店")

    console.log("shops2:",shops2,"shops1:",shops1)

输出结果如下:

shops2: (4) ["所有门店", 1, 2, 3],shops1: (4) ["所有门店", 1, 2, 3]

2 回复
qianxiulan
qianxiulan1 楼5 年前

数组是引用类型 你的shops2 shops1指向的是同一块内存,所以该一个另一个也生效,你用Object.assign()或者是json 拷贝一份,再进行操作应该就可以了

fang94
fang942 楼5 年前

var shops2=[1,2,3]

    var shops1=[1,2,3]

    shops1.unshift("所有门店")

    console.log("shops2:",shops2,"shops1:",shops1)

var shops2=[1,2,3]

    var shops1=JSON.parse(JSON.stringify(shops2))

    shops1.unshift("所有门店")

    console.log("shops2:",shops2,"shops1:",shops1)


这样呢