Javascript 按日期参数删除对象。

Javascript 按日期参数删除对象。,javascript,Javascript,如果txnDate不是从当前开始年份01/01/2016到当前日期08/05/2016,我如何删除对象。 [{ "site": "One", "txnDate": "01/19/2015", }, { "site": "Two", "txnDate": "01/25/2016", }, { "site": "Three", "txnDate": "01/26/2014", }, { "site": "Three",

如果
txnDate
不是从当前开始年份
01/01/2016到当前日期08/05/2016,我如何删除对象。

[{
    "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";
});
arr.filter(函数(el){
返回el.txnDate=“08/05/2016”;
});
您就快到了:

var-arr=[{
“站点”:“一个”,
“txnDate”:“2015年1月19日”,
}, {
“站点”:“两个”,
“txnDate”:“2016年1月25日”,
}, {
“站点”:“三个”,
“txnDate”:“2014年1月26日”,
}, {
“站点”:“三个”,
“TXN日期”:“2016年5月9日”,
}];
var startTs=(新日期(new Date().getFullYear(),0,1)).getTime(),
endTs=Date.now();
var res=阵列滤波器(功能(el){
var ts=(新日期(el.txnDate)).getTime();

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

var-arr=[{
“站点”:“一个”,
“txnDate”:“2015年1月19日”,
}, {
“站点”:“两个”,
“txnDate”:“2016年1月25日”,
}, {
“站点”:“三个”,
“txnDate”:“2014年1月26日”,
}, {
“站点”:“三个”,
“TXN日期”:“2016年5月9日”,
}];
var arr=arr.filter(函数(el){
var date=date.parse(el.txnDate);

return date>=new date(“01/01/2016”)&&date实际上,您需要首先将字符串解析为一个实际的
date
对象进行比较。如果您也为下限和上限创建变量,则比较容易

const myDates=[{
“站点”:“一个”,
“txnDate”:“2015年1月19日”,
}, {
“站点”:“两个”,
“txnDate”:“2016年1月25日”,
}, {
“站点”:“三个”,
“txnDate”:“2014年1月26日”,
}, {
“站点”:“三个”,
“TXN日期”:“2016年5月9日”,
}];
//上限和下限。
const lowerDate=新日期(2016,00,01);
const upperDate=新日期(Date.now());
const goodDates=myDates.filter(项=>{
const currentDate=新日期(item.txnDate);//当前日期对象

return lowerDate您的方法是正确的,除非您需要将这些字符串转换为
Date
objects。有关转换为日期或交付日期的详细信息是用于字符串比较的yyyyMMdd格式。您的参数可能不太正确。您将永远不会有小于2016年1月1日且大于2016年5月8日的txnDate。如果您nt要对字符串格式的日期进行排序/筛选,您需要YYYY-MM-DD格式才能获得正确的日期。但通常最好将它们转换为日期,然后比较getTime()。Javascript中的日期是对象,而不是数字。它们可以强制为不同的类型。请尝试以下代码:
var d=new date(“01/01/2016”);console.log(d+0);console.log(d-0);
。另一方面,
d.getTime()
是一个数字。@Arnauld你完全正确。谢谢你的更正。别担心。作为一个补充,你可能想使用显式地将新创建的日期转换为时间戳:
var d=+new Date(“01/01/2016”);
。这将消除任何歧义。