Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较2个Javascript数组并基于if语句进行更新_Javascript_Arrays_For Loop_Arraylist - Fatal编程技术网

比较2个Javascript数组并基于if语句进行更新

比较2个Javascript数组并基于if语句进行更新,javascript,arrays,for-loop,arraylist,Javascript,Arrays,For Loop,Arraylist,鉴于下面的数组已经按“startDate”排序,我试图比较哪些对象的“startDate”出现在前一个对象“endDate”之后 我尝试编写以下脚本,但始终遇到订单循环问题: for (var i = 0; i < overlapList.length; i++){ maxOrderEnd = [{endDateMax: 0, order: 0}]; overlapList.forEach(function(start){ var

鉴于下面的数组已经按“startDate”排序,我试图比较哪些对象的“startDate”出现在前一个对象“endDate”之后

我尝试编写以下脚本,但始终遇到订单循环问题:

    for (var i = 0; i < overlapList.length; i++){
     maxOrderEnd = [{endDateMax: 0, order: 0}];
        overlapList.forEach(function(start){
            var addOrder = 0;
            for (var i = 0; i < maxOrderEnd.length; i++){

                        var less = maxOrderEnd.filter(function(item){ return start.startDate + 1 > item.endDateMax})[i];
                            if (less){
                                maxOrderEnd.push({endDateMax: start.endDate, order: addOrder}),
                                addOrder = addOrder + 1;
                            }
                            else {start.order = maxOrderEnd.order, maxOrderEnd.endDateMax = start.endDate;
                            }
                            console.log(addOrder);
            }
        });
    }

console.log(overlapList);
console.log(maxOrderEnd);
for(变量i=0;iitem.endDateMax})[i];
如有(减){
push({endDateMax:start.endDate,order:addOrder}),
addOrder=addOrder+1;
}
else{start.order=maxOrderEnd.order,maxOrderEnd.endDateMax=start.endDate;
}
console.log(addOrder);
}
});
}
console.log(重叠列表);
log(maxOrderEnd);

不太清楚什么是“被比较对象的订单号被更新以匹配”意味着准确地使用一个对象,其中
订单
用作键。。。根据需要在循环中更新
endDateMax
。然后将对象映射到数组一旦您拥有“重叠列表”中的所有
endMax
,“任务6”将与“maxOrderEnd”数组中的所有对象进行比较,以找到“任务6”的“重叠列表.endDate”大于“maxOrderEnd.endDateMax”的位置。如果为true,“overlapList.order”将更新为“maxOrderEnd.order”的值(“任务6”案例中的“1”),然后使用“overlapList.endDate”更新相应的“maxOrderEnd.endDateMax”(从1053更新到1188)。
 overlapList = [
   {elem: <div id="task7">, startDate: 918, endDate: 1053, order: 1}
   {elem: <div id="task8">, startDate: 973, endDate: 1108, order: 2}
   {elem: <div id="task3">, startDate: 1026, endDate: 1647, order: 3}
   {elem: <div id="task6">, startDate: 1053, endDate: 1188, order: **1**}
   {elem: <div id="task5">, startDate: 1107, endDate: 1242, order: **2**}
   {elem: <div id="task4">, startDate: 1188, endDate: 1323, order: **1**}
 ]
maxOrderEnd = [
  {endDateMax: 0, order: 0}
  {endDateMax: 1323, order: 1}
  {endDateMax: 1242, order: 2}
  {endDateMax: 1647, order: 3}
]
    for (var i = 0; i < overlapList.length; i++){
     maxOrderEnd = [{endDateMax: 0, order: 0}];
        overlapList.forEach(function(start){
            var addOrder = 0;
            for (var i = 0; i < maxOrderEnd.length; i++){

                        var less = maxOrderEnd.filter(function(item){ return start.startDate + 1 > item.endDateMax})[i];
                            if (less){
                                maxOrderEnd.push({endDateMax: start.endDate, order: addOrder}),
                                addOrder = addOrder + 1;
                            }
                            else {start.order = maxOrderEnd.order, maxOrderEnd.endDateMax = start.endDate;
                            }
                            console.log(addOrder);
            }
        });
    }

console.log(overlapList);
console.log(maxOrderEnd);