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'])
我很想知道它是如何工作的,在这种情况下如何将原始数组的副本存储在变量中?你知道吗
Sort
改变原始数组,因此需要创建数组的副本。这里我使用...
扩展语法来创建原始数组的浅拷贝function keepOriginalArray(arr){ let storeWithoutSorting = [...arr]; arr.sort() return storeWithoutSorting } console.log(keepOriginalArray(['b', 'a']))
;数组是引用类型。将arr值存储到storeWithoutSorting时,实际上是存储它的引用。这就是为什么在执行排序时两者都会被排序。 要创建数组的副本,可以使用扩展运算符:
它将用新引用创建一个新数组。因此,当您对arr执行排序时,它不会被操纵
相关问题 更多 >
编程相关推荐