比较日期并创建计数 javascript
Compare dates and create count javascript
我正在尝试从一个数组中比较以"Y-M-D H-i-s"格式存储的日期,希望删除重复项并沿着原始日期创建计数,我使用以下代码比较日期:
function compare(a, b){
if(a.getDate() == b.getDate() && a.getMonth() == b.getMonth() && a.getFullYear() == b.getFullYear()){
return true;
}else{
return false;
};
};
这就是我循环它们的方式:
times.forEach(function(timeOne){
times.forEach(function(timeTwo){
if(compare(timeOne, timeTwo)){
console.log("same");
}else{
console.log("different");
count.push(timeOne);
};
});
});
当我这样做时,它似乎不起作用,只是删除了前 1619 个值,它不会推送到 count 数组并导致我的浏览器崩溃。关于如何克服这个问题的任何建议或实现我需要的更好方法。我目前也不确定如何创建计数。
编辑---
以下是该程序的其余代码:
var results = <?php echo $results; ?>,
times = [],
count = [];
results.forEach(function(result){
times.push(new Date(result.time));
});
我还想提一下,项目数组接近 30,000 个条目。所以我需要一种方法来大大减少处理时间。
我会给出一些提示。也许他们会解决你的问题。
首先,您可以减少代码:
function compare(a, b){
if(a.getDate() == b.getDate() && a.getMonth() == b.getMonth() && a.getFullYear() == b.getFullYear()){
return true;
}else{
return false;
};
};
自
function compare(a, b){
return a.getDate() == b.getDate() && a.getMonth() == b.getMonth() && a.getFullYear() == b.getFullYear();
};
其次,你的循环是错误的。内部循环循环 i 变量而不是 j:
for(var j = 0; j < times.length-1; i++){
...
};
第三,由于您正在尝试删除重复项,因此您应该跳过i == j的元素,因为它们始终相等。所以添加:
if(i == j) continue;
到内循环。
第四,你的方法错了。如果一个元素与其他元素不同,则推送到 count 数组。这并不能保证没有重复项。看,如果你有 和 数组 [1, 2, 2, 3, 4],并尝试使用你的算法删除重复项,结果数组将是这样的 [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]。这是因为您正在按元素搜索重复,但您应该按数组搜索它。您的算法必须保证数组中只有一种。一个正确的循环是:
for(var i = 0; i < times.length; i++){
if(times[i] == null || times[i] == undefined) continue;
if(!contains(count, times[i])){
count.push(times[i]);
}
}
function contains(arr, elm){
for(var i = 0; i < arr.length; i++){
if(compare(elm, arr[i]))
return true;
}
return false;
}
计数数组现在应该每个日期只有一种类型,没有重复。
编辑后:
哇,30000个条目。对于 30000 个条目,该方法必须是另一种方法。试试这个解决方案,看看它是否适合你,但我相信它不适合你的情况。
for(var i = 0; i < times.length-1; i++){
for(var j = 0; j < times.length-1; i++){
if((i!=j) && times[i] && times[j]){
if(compare(times[i], times[j]) == true){
console.log("same!!!");
}else{
console.log("not same!");
count.push(times[i]);
};
};
};
};
相关文章:
- 从javascript创建一个列表
- 使用Javascript创建测验页面
- 获取对使用Tampermonkey使用javascript创建的元素的引用
- Jquerymobile-使用javascript创建选择菜单
- 使用SVG和JavaScript创建波浪动画
- 用javascript创建一个看起来正常分布的模式
- 如何在Ol3弹出窗口中添加用javascript创建的按钮上的点击事件
- 在PHP邮件中发送javascript创建的内容
- Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定
- 重置使用javascript创建的新tr的val
- 如何使用javascript创建颜色数组
- javascript创建日期的月份错误
- 如何使用JavaScript创建时间计数器
- 使用Javascript创建内部样式表
- 用javascript创建另一个对象的实例
- 如何使用HTML、CSS和JavaScript创建自动图片库幻灯片
- 使用Javascript创建的Cookie在C#代码中不可访问..任何原因或其他选择
- 用javascript创建对象的dynamic数组
- Javascript创建函数,以便在其他函数之间共享变量
- 使用javascript创建幻灯片效果