即使使用javascript函数,AngularJs也无法对数组进行排序
编辑:我修复了它 我修复了它,我不知道如何和做了什么,但我所做的只是移动了var personTaskMonthly=[]的init;从即使使用javascript函数,AngularJs也无法对数组进行排序,javascript,arrays,angularjs,angularjs-orderby,Javascript,Arrays,Angularjs,Angularjs Orderby,编辑:我修复了它 我修复了它,我不知道如何和做了什么,但我所做的只是移动了var personTaskMonthly=[]的init;从 $http.get().then(function(data){ var personTaskMonthly=[];}) $http.get().then(function(data){ var personTaskMonthly=[];}) 在$http启动之前 像这样 var personTaskMonthly=[]; $http.get().then
$http.get().then(function(data){
var personTaskMonthly=[];})
$http.get().then(function(data){
var personTaskMonthly=[];})
在$http启动之前
像这样
var personTaskMonthly=[];
$http.get().then(function(data){})
var personTaskMonthly=[];
$http.get().then(function(data){})
谢谢大家在这个问题上帮助我
编辑:
我发现了问题所在,但我不知道如何解决:
在我执行$http.get().then(函数(数据))之前,一切似乎都很好{
/******这里我失去了正确的顺序****/})代码>
这是一个复杂的代码,我有3个嵌套的角度foreach函数。
最后,不知何故,我得到了想要的结果。
但结果排序不正确,我不知道为什么
结果是:
{dayId: 1, dayName: "Jeudi", personTaskMonthly: Array(2), $$hashKey: "object:79"}
{dayId: 3, dayName: "Samedi", personTaskMonthly: Array(0), $$hashKey: "object:82"}
{dayId: 2, dayName: "Vendredi", personTaskMonthly: Array(0), $$hashKey: "object:85"}
{dayId: 5, dayName: "Lundi", personTaskMonthly: Array(0), $$hashKey: "object:88"}
{dayId: 6, dayName: "Mardi", personTaskMonthly: Array(0), $$hashKey: "object:91"}
{dayId: 4, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:94"}
{dayId: 10, dayName: "Samedi", personTaskMonthly: Array(0), $$hashKey: "object:97"}
{dayId: 7, dayName: "Mercredi", personTaskMonthly: Array(0), $$hashKey: "object:100"}
{dayId: 12, dayName: "Lundi", personTaskMonthly: Array(0), $$hashKey: "object:103"}
{dayId: 8, dayName: "Jeudi", personTaskMonthly: Array(0), $$hashKey: "object:106"}
{dayId: 11, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:109"}
{dayId: 9, dayName: "Vendredi", personTaskMonthly: Array(0), $$hashKey: "object:112"}
{dayId: 18, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:115"}
{dayId: 13, dayName: "Mardi", personTaskMonthly: Array(0), $$hashKey: "object:118"}
{dayId: 15, dayName: "Jeudi", personTaskMonthly: Array(0), $$hashKey: "object:121"}
我的预期结果是,类似这样:
{dayId: 1, dayName: "Jeudi", personTaskMonthly: Array(2), $$hashKey: "object:79"}
{dayId: 2, dayName: "Vendredi", personTaskMonthly: Array(0), $$hashKey: "object:85"}
{dayId: 3, dayName: "Samedi", personTaskMonthly: Array(0), $$hashKey: "object:82"}
{dayId: 4, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:94"}
{dayId: 5, dayName: "Lundi", personTaskMonthly: Array(0), $$hashKey: "object:88"}
{dayId: 6, dayName: "Mardi", personTaskMonthly: Array(0), $$hashKey: "object:91"}
{dayId: 7, dayName: "Mercredi", personTaskMonthly: Array(0), $$hashKey: "object:100"}
{dayId: 8, dayName: "Jeudi", personTaskMonthly: Array(0), $$hashKey: "object:106"}
{dayId: 9, dayName: "Vendredi", personTaskMonthly: Array(0), $$hashKey: "object:112"}
{dayId: 10, dayName: "Samedi", personTaskMonthly: Array(0), $$hashKey: "object:97"}
{dayId: 11, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:109"}
{dayId: 12, dayName: "Lundi", personTaskMonthly: Array(0), $$hashKey: "object:103"}
{dayId: 13, dayName: "Mardi", personTaskMonthly: Array(0), $$hashKey: "object:118"}
....
您能帮助我如何对json结果进行排序以实现所需的结果吗
这是我的angularjs代码:
function getMonthlyTask(daysInterv){
/*
var sDateHour = $scope.dayInterval[0].dsUnix;
var eDateHour = $scope.dayInterval[$scope.dayInterval.length-1].deUnix; */
var taskPerDay=[];
var i=0;
var counter = [];
daysInterv.forEach(function(item, ind){
var sDateHour = item.dsUnix;
var eDateHour = item.deUnix;
var dayName = item.dayName;
var dId = item.id;
$http.get('link')
.then(function(data){
var datas = data.data;
var personTaskMonthly=[];
datas.forEach(function(it, ind){
var idProfile = it.id_profile;
var idGroupe = it.id_groupe;
if (it.tasks){
var countPT = {};
var count;
it.tasks.forEach(function(k,v){
if(k.comptable==1){
if(!countPT[k.id_profile]){
count=1;
countPT[k.id_profile]=count;
}else{
count+=1;
countPT[k.id_profile]=count;
}
}
})
personTaskMonthly.push({'id_profile':it.id_profile, 'groupe':it.groupe,countPT});
}
})
taskPerDay.push({'dayId':dId,'dayName':dayName,personTaskMonthly});
//$scope.personTaskMonthly=personTaskMonthly;
});//ending then
})
console.log(taskPerDay);
var sorted = taskPerDay.sort(function(a,b){return a-b});
$scope.taskPerDay = sorted;
console.log(sorted);
}
在sort()中,缺少属性dayId,请尝试以下操作
taskPerDay.sort(function(a,b){ return a.dayId - b.dayId; })
你可以试试这个
var items = [{dayId: 1, dayName: "Jeudi", personTaskMonthly: Array(2), $$hashKey: "object:79"},
{dayId: 3, dayName: "Samedi", personTaskMonthly: Array(0), $$hashKey: "object:82"},
{dayId: 2, dayName: "Vendredi", personTaskMonthly: Array(0), $$hashKey: "object:85"},
{dayId: 5, dayName: "Lundi", personTaskMonthly: Array(0), $$hashKey: "object:88"},
{dayId: 6, dayName: "Mardi", personTaskMonthly: Array(0), $$hashKey: "object:91"},
{dayId: 4, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:94"},
{dayId: 10, dayName: "Samedi", personTaskMonthly: Array(0), $$hashKey: "object:97"},
{dayId: 7, dayName: "Mercredi", personTaskMonthly: Array(0), $$hashKey: "object:100"},
{dayId: 12, dayName: "Lundi", personTaskMonthly: Array(0), $$hashKey: "object:103"},
{dayId: 8, dayName: "Jeudi", personTaskMonthly: Array(0), $$hashKey: "object:106"},
{dayId: 11, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:109"},
{dayId: 9, dayName: "Vendredi", personTaskMonthly: Array(0), $$hashKey: "object:112"},
{dayId: 18, dayName: "Dimanche", personTaskMonthly: Array(0), $$hashKey: "object:115"},
{dayId: 13, dayName: "Mardi", personTaskMonthly: Array(0), $$hashKey: "object:118"},
{dayId: 15, dayName: "Jeudi", personTaskMonthly: Array(0), $$hashKey: "object:121"}]
var sortedArray = items.sort(function(a,b){
return a.dayId >b.dayId?1:a.dayId <b.dayId?-1:0
})
console.log(sortedArray);
var items=[{dayId:1,dayName:“Jeudi”,personTaskMonthly:Array(2),$$hashKey:“object:79”},
{dayId:3,dayName:“Samedi”,personTaskMonthly:Array(0),$$hashKey:“object:82”},
{dayId:2,dayName:“Vendredi”,personTaskMonthly:Array(0),$$hashKey:“object:85”},
{dayId:5,dayName:“Lundi”,personTaskMonthly:Array(0),$$hashKey:“object:88”},
{dayId:6,dayName:“Mardi”,personTaskMonthly:Array(0),$$hashKey:“object:91”},
{dayId:4,dayName:“Dimanche”,personTaskMonthly:Array(0),$$hashKey:“object:94”},
{dayId:10,dayName:“Samedi”,personTaskMonthly:Array(0),$$hashKey:“object:97”},
{dayId:7,dayName:“Mercredi”,personTaskMonthly:Array(0),$$hashKey:“object:100”},
{dayId:12,dayName:“Lundi”,personTaskMonthly:Array(0),$$hashKey:“object:103”},
{dayId:8,dayName:“Jeudi”,personTaskMonthly:Array(0),$$hashKey:“object:106”},
{dayId:11,dayName:“Dimanche”,personTaskMonthly:Array(0),$$hashKey:“object:109”},
{dayId:9,dayName:“Vendredi”,personTaskMonthly:Array(0),$$hashKey:“object:112”},
{dayId:18,dayName:“Dimanche”,personTaskMonthly:Array(0),$$hashKey:“object:115”},
{dayId:13,dayName:“Mardi”,personTaskMonthly:Array(0),$$hashKey:“object:118”},
{dayId:15,dayName:“Jeudi”,personTaskMonthly:Array(0),$$hashKey:“object:121”}]
var SORTEDARAY=项目。排序(函数(a,b){
返回a.dayId>b.dayId?1:a.dayId您的排序函数正在使用整个对象进行比较,您需要像这样使用
taskPerDay.sort(函数(a,b){返回a.dayId-b.dayId;})
但是,如果您不需要javascript中的排序数组,也可以使用angular 2/4/5管道在HTML代码中对它们进行排序,例如,如果您使用angular 1.x,则可以使用默认值为您进行排序编辑:我修复了它
我修复了它,我不知道如何和做了什么,但我所做的只是从
$http.get().then(function(data){
var personTaskMonthly=[];})
$http.get().then(function(data){
var personTaskMonthly=[];})
在$http启动之前
像这样
var personTaskMonthly=[];
$http.get().then(function(data){})
var personTaskMonthly=[];
$http.get().then(function(data){})
谢谢大家在这个问题上的帮助。好的。但是排序代码在哪里?通常我应该已经对它进行排序,但是发生了一些事情,排序正在改变顺序。看看这个链接……刷新它,你会看到更改,我没有看到你在你发布的链接中描述的症状。我尝试了这个,a这根本不起作用。我甚至不知道为什么它不是数组,而是一个对象?你可以写这个内部排序函数..返回a.dayId>b.dayId?1:-1你好。谢谢你的帮助,我也试过了,但似乎没有解决问题。我总是得到同样的结果。