Array sort()在赋值给另一个数组后也对实际数组列表进行排序

Array sort() sorted the actual array list after assigning to another array as well

本文关键字:数组 列表 排序 赋值 Array 另一个 sort      更新时间:2023-09-26

结果保存数组中的动态值,但排序后的结果也得到排序,但我不希望它得到排序。但是排序之后,它也被排序了。为什么呢?

$scope.arreyList = result;
var sorted_arr = $scope.arreyList.sort();
$scope.countRowSame = [];
for (var i = 0; i < sorted_arr.length - 1; i++) {
    if (sorted_arr[i + 1].SupplierId == sorted_arr[i].SupplierId) {
        $scope.countRowSame.push(sorted_arr[i].SupplierId);
    }
}

sort将数组排序到的位置。所以这一行:

var sorted_arr = $scope.arreyList.sort();

$scope.arreyList进行排序,并返回对同一数组的引用。它创建数组的排序副本。

如果你想复制并排序,使用slice:

var sorted_arr = $scope.arreyList.slice(0).sort();

除了@Crowder的答案,您还可以使用angular.copy()克隆数组。

$scope.arreyList = angular.copy(result);
var sorted_arr = $scope.arreyList.sort();