微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用push方法和indexOf方法从AngularJS1中的数组中删除/检查重复的日期

如何解决使用push方法和indexOf方法从AngularJS1中的数组中删除/检查重复的日期

我能够提取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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。