barValues是我要传递给函数的数组。在函数中,我有这个:
alert(barValues);
var sortedBarValues = barValues;
sortedBarValues.sort(function(a,b){return b - a});
alert(barValues);
我试图以两个数组结束。 barValues是原始数组,sortedBarValues是该数组的副本,现已排序。
但是,通过这两个警报,我发现barValues也正在排序中。这是为什么?将数组副本与原始数组分开排序的正确方法是什么?
最佳答案
使用语句var sortedBarValues = barValues;
,您不复制数组。您仅作引用。这两个名称都引用相同的数组。
您可以使用var sortedBarValues = barValues.slice();
复制它。 slice方法用于对数组进行 slice ,但是如果不向其传递任何参数,它将创建一个副本。
请记住,使用slice方法不能在多维数组上正常工作。复制多维数组有些棘手,但是jQuery的extend函数可以为您做到这一点。
您可以在this post中看到有关如何复制数组的信息。