数组.prototype.sort方法更改数组值以及该数组的变量值

2024-10-01 22:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

Array.prototype.sort()方法更改数组,因此引用它的变量的值也会更改。对我来说这看起来很可怕,之后我无法访问原始数组。你知道吗

例如:

function keepOriginalArray([...arr]){

    let storeWithoutSorting = arr; // I want original copy of array in variable.

    arr.sort()

    return storeWithoutSorting // gives result ['a','b'] . Variable's value was changed after calling sort method. 

}

keepOriginalArray(['b', 'a'])

我很想知道它是如何工作的,在这种情况下如何将原始数组的副本存储在变量中?你知道吗


Tags: of方法function数组sortarrayprototypelet
2条回答

Sort改变原始数组,因此需要创建数组的副本。这里我使用...扩展语法来创建原始数组的浅拷贝

function keepOriginalArray(arr){ let storeWithoutSorting = [...arr]; arr.sort() return storeWithoutSorting } console.log(keepOriginalArray(['b', 'a']))

数组是引用类型。将arr值存储到storeWithoutSorting时,实际上是存储它的引用。这就是为什么在执行排序时两者都会被排序。 要创建数组的副本,可以使用扩展运算符:

 let storeWithoutSorting = [...arr]

它将用新引用创建一个新数组。因此,当您对arr执行排序时,它不会被操纵

相关问题 更多 >

    热门问题