gpt4 book ai didi

javascript - 即使使用 JavaScript 函数,AngularJs 也无法对数组进行排序

转载 作者:行者123 更新时间:2023-12-03 02:25:16 24 4
gpt4 key购买 nike

编辑:我修复了它

好吧,我修复了它,我不知道如何修复它,但我所做的只是移动了 var personTaskMonthly=[]; 的 init;来自

$http.get().then(function(data){
var personTaskMonthly=[];})

到 $http 开始之前像这样

var personTaskMonthly=[];
$http.get().then(function(data){})

感谢大家帮助我解决这个问题。

编辑:我发现问题出在哪里,但不知道如何解决:一切似乎都很好,直到我执行 $http.get().then(function(data){
/***** 这里我失去了正确的顺序 ****/});
这是一个复杂的代码,其中我有 3 个嵌套的 Angular 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);


}

最佳答案

您的排序功能正在使用整个对象来比较您需要使用的内容taskPerDay.sort(function(a,b){ return a.dayId - b.dayId; })

但是,如果您不需要 JavaScript 中的排序数组,您也可以使用 Angular 2/4/5 管道在 HTML 代码本身中对它们进行排序,有很多第三方管道可用,例如 ngx-order-pipe 。如果您使用的是 Angular 1.x,则可以使用默认值 orderBy filter为您做这件事

关于javascript - 即使使用 JavaScript 函数,AngularJs 也无法对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com