按日期参数删除对象

Removing objects by date parameter.

本文关键字:对象 删除 参数 日期      更新时间:2023-09-26

如何从当前开始年份01/01/2016 till current date 08/05/2016. 中删除txnDate不在的对象

[{
    "site": "One",
    "txnDate": "01/19/2015",
   }, {
    "site": "Two",
    "txnDate": "01/25/2016",   
}, {
    "site": "Three",
    "txnDate": "01/26/2014",    
}, {
    "site": "Three",
    "txnDate": "09/05/2016",    
}]

我希望数组只包含一个对象。

[{
    "site": "Two",
    "txnDate": "01/25/2016",   
}]

我不知道如何处理,通常我会根据dateFrom和dateTo进行筛选。。。

arr.filter(function (el) {
   return el.txnDate <= "01/01/2016" &&
             el.txnDate >= "08/05/2016";
});

您几乎做到了:

var arr = [{
    "site": "One",
    "txnDate": "01/19/2015",
   }, {
    "site": "Two",
    "txnDate": "01/25/2016",   
}, {
    "site": "Three",
    "txnDate": "01/26/2014",    
}, {
    "site": "Three",
    "txnDate": "09/05/2016",    
}];
var startTs = (new Date(new Date().getFullYear(), 0, 1)).getTime(),
    endTs = Date.now();
var res = arr.filter(function (el) {
  var ts = (new Date(el.txnDate)).getTime();
  return ts >= startTs && ts <= endTs;
});
console.log(res);

实际上,您非常接近,需要首先将字符串解析为实际的Date对象进行比较。如果您也为您的下限和上限创建变量,则会更容易。

const myDates = [{
    "site": "One",
    "txnDate": "01/19/2015",
   }, {
    "site": "Two",
    "txnDate": "01/25/2016",   
}, {
    "site": "Three",
    "txnDate": "01/26/2014",    
}, {
    "site": "Three",
    "txnDate": "09/05/2016",    
}];
//Upper and lower ranges.
const lowerDate = new Date(2016, 00, 01);
const upperDate = new Date(Date.now());
const goodDates = myDates.filter(item => {
  const currentDate = new Date(item.txnDate); //Current date object
  return lowerDate <= currentDate && currentDate <= upperDate //Only add things within our range
});
console.log(goodDates);

请注意,我对每个变量/对象都使用了const。这样可以确保对象在以后不会发生突变,确保它们已设置。如果希望它们是可变的,请将变量声明更改为let

JavaScript中的日期可以很容易地与>=等运算符进行比较,因为它们在比较时被强制为一个数字。将你的值解析为日期,你已经得到了:

var arr = [{
    "site": "One",
    "txnDate": "01/19/2015",
   }, {
    "site": "Two",
    "txnDate": "01/25/2016",   
}, {
    "site": "Three",
    "txnDate": "01/26/2014",    
}, {
    "site": "Three",
    "txnDate": "09/05/2016",    
}];
var arr = arr.filter(function (el) {
  var date = Date.parse(el.txnDate);
   return date >= new Date("01/01/2016") && date <= new Date();
});
console.log(arr.length);
console.log(arr[0])