首页 > 解决方案 > Javascript中.sort()方法的问题,两个数组排序而不是一个

问题描述

我正在尝试将数组定义为b数组参数的独立副本a。因此,我想改变b而不改变a.

但这里有一个谜:当我排序b时,a也排序了!

function firstDuplicate(a) {
    let b = a;

    console.log(`this is a : ${a}`)  // this is a : 2,1,3,5,3,2 
    console.log(`this is b : ${b}`)  // this is b : 2,1,3,5,3,2

    b.sort()                    
    console.log(`this is a : ${a}`)  // this is a : 1,2,2,3,3,5 (my problem)
    console.log(`this is b : ${b}`)  // this is b : 1,2,2,3,3,5
}

firstDuplicate([2, 1, 3, 5, 3, 2])

我怎样才能避免这种情况?

非常感谢您的回复。

标签: javascriptarrayssortingmethods

解决方案


您不是在复制a,您只是在创建对它的新引用。用 复制数组slice(),然后对其进行排序。

let b = a.slice().sort();

推荐阅读