javascript数组排序

DA.*_*DA. 3 javascript arrays sorting

barValues是我传递给函数的数组.在函数中我有这个:

alert(barValues);

var sortedBarValues = barValues;
sortedBarValues.sort(function(a,b){return b - a});

alert(barValues);
Run Code Online (Sandbox Code Playgroud)

我试图最终得到两个阵列.barValues是原始数组,sortedBarValues是该数组的副本,现在已经排序.

但是,通过这两个警报,我发现barValues也被排序了.这是为什么?制作数组副本的正确方法是什么,以便将其与原始数组分开?

Eli*_*ria 7

使用该语句var sortedBarValues = barValues;,您不会复制该数组.你只是在做参考.两个名称都指向相同的数组.

你可以复制它var sortedBarValues = barValues.slice();.slice方法用于切片数组,但是如果你没有传递任何参数,它将进行复制.

请记住,使用切片方法无法在多维数组上正常工作.复制多维数组有点棘手,但jQuery的扩展函数可以为您完成.

您可以在此帖子中查看有关如何复制数组的信息.