Javascript AngularJS对对象数组进行排序

Javascript AngularJS对对象数组进行排序,javascript,angularjs,Javascript,Angularjs,我试图对下一个数组进行排序,但每次它给我一个错误,我都会在stack overflow中寻找其他解决方案,但它们似乎都不起作用 $scope.builds = [build:[ {'_id': '6384', 'name': Mock1, 'builDate': 20150302T110232}, {'_id': '6383', 'name': Mock2, 'builDate': 20150209T130212}, {'_id': '6382', 'name': Moc

我试图对下一个数组进行排序,但每次它给我一个错误,我都会在stack overflow中寻找其他解决方案,但它们似乎都不起作用

$scope.builds = [build:[
    {'_id': '6384', 'name': Mock1, 'builDate': 20150302T110232},
    {'_id': '6383', 'name': Mock2, 'builDate': 20150209T130212},
    {'_id': '6382', 'name': Mock3, 'builDate': 20150103T145212}]
];
    var sorted = $scope.sortByKey($scope.builds.build[index],'builDate')
这是我的职责:

    $scope.sortByKey = function (array, key) {
        return array.sort(function(a,b){
            var x = a[key] < b[key]? -1:1;
            return x;
        });
    }
$scope.sortByKey=函数(数组,键){
返回array.sort(函数(a,b){
var x=a[键]
这不是您问题中的100%明确问题,但您目前正在声明两个级别的数组

$scope.builds
定义更改为:

$scope.builds = {build:[
    {'_id': '6384', 'name': Mock1, 'builDate': 20150302T110232},
    {'_id': '6383', 'name': Mock2, 'builDate': 20150209T130212},
    {'_id': '6382', 'name': Mock3, 'builDate': 20150103T145212}]
};

$scope.builds是一个数组而不是对象,并且索引不存在…请尝试以下操作:

$scope.builds = {build:[
    {'_id': '6384', 'name': Mock1, 'builDate': 20150302T110232},
    {'_id': '6383', 'name': Mock2, 'builDate': 20150209T130212},
    {'_id': '6382', 'name': Mock3, 'builDate': 20150103T145212}]
};
var sorted = $scope.sortByKey($scope.builds.build,'builDate')

这有多个问题

1) 您正在尝试像对象一样使用数组

$scope.builds = [build:[
…应该是

$scope.builds = {build:[
var sorted = $scope.sortByKey($scope.builds.build,'builDate')
2)
20150302T110232
不是有效数字(不允许使用
T
)。所以您需要将它们转换为字符串(或者将它们转换为实际的日期对象,因为它们看起来就是这样)

3)
$scope.builds.build[index]
是一个对象,而不是数组。所以,我猜你的意思是
$scope.builds.build

var sorted = $scope.sortByKey($scope.builds.build[index],'builDate')
…应该是

$scope.builds = {build:[
var sorted = $scope.sortByKey($scope.builds.build,'builDate')

还值得注意的是,有三个值(0、1和-1)可以从
Array.prototype.sort
返回。排序计算需要返回正确的值,否则排序将不稳定(可能会出现错误)

您的排序函数需要如下所示:

    return array.sort(function(a,b){
        if(a[key] == b[key]) { 
          return 0; 
        }

        return a[key] < b[key]? -1:1;
    });
返回数组.sort(函数(a,b){
如果(a[key]==b[key]){
返回0;
}
返回a[键]
???它给了我一个错误错误信息是什么?谢谢,当我修复错误时,我意识到了日期。现在,这种方法正在发挥作用。