Javascript AngularJS对对象数组进行排序
我试图对下一个数组进行排序,但每次它给我一个错误,我都会在stack overflow中寻找其他解决方案,但它们似乎都不起作用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
$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[键]
???它给了我一个错误错误信息是什么?谢谢,当我修复错误时,我意识到了日期。现在,这种方法正在发挥作用。