问题描述
我能够提取EPOCH日期并将其成功转换为字符串,但是我之前编写的代码并未检查或删除重复项。有人知道我可以添加些什么吗?在这种情况下,时间戳是我从实时数据中提取的EPOCH日期! ANGULARJS1
解决方法
var dateMap = {};
for (i = 0; i < dbData.length; i++) {
let tmp_date_str = "";
let tmp_date = new Date(dbData[i].TIMESTAMP);
tmp_date_str += tmp_date.getFullYear();
tmp_date_str += "-";
if ((tmp_date.getMonth()+1) < 10) {
tmp_date_str += "0";
}
tmp_date_str += (tmp_date.getMonth()+1);
tmp_date_str += "-";
if (tmp_date.getDate() < 10) {
tmp_date_str += "0";
}
tmp_date_str += tmp_date.getDate();
// make it a map,and if value for this string already exists,do nothing
if (!dateMap[tmp_date_str]) {
dateMap[tmp_date_str] = true;
}
}
如果您需要将日期作为数组来获取
var dates = Object.keys(dateMap)
,
您可以使用set
来消除重复:
const mySet= new Set(["one","two","three","one"]);
mySet.has("one") // true
mySet.size === 3); // true
Set构造函数可以接受一个数组 初始化集合的项目。
,要检查并删除重复项,可以使用angular.equals
:
var newArray = [];
angular.forEach($scope.dates,function(value,key) {
var exists = false;
angular.forEach(newArray,function(val2,key) {
if(angular.equals(value.date,val2.date)){ exists = true };
});
if(exists == false && value.dates != "") { newArray.push(value); }
});
$scope.dates = newArray;