Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象属性为日期的对象的筛选器数组_Javascript_Arrays_Object_Momentjs - Fatal编程技术网

Javascript 对象属性为日期的对象的筛选器数组

Javascript 对象属性为日期的对象的筛选器数组,javascript,arrays,object,momentjs,Javascript,Arrays,Object,Momentjs,我有一个对象数组,其中每个对象看起来像这样 { "ActionDateTime": "2018-07-31T11:07:11Z", "ExternalID": 3962770, "GrandTotal": 707.5, "InternalID": 52858173, "ItemName": "Ricciolini Pasta", } 我需要过滤这个数组(可能使用moment.js),使“ActionDateType”等于当前月份(moment().format('

我有一个对象数组,其中每个对象看起来像这样

{
   "ActionDateTime": "2018-07-31T11:07:11Z",
   "ExternalID": 3962770,
   "GrandTotal": 707.5,
   "InternalID": 52858173,
   "ItemName": "Ricciolini Pasta",
}
我需要过滤这个数组(可能使用moment.js),使“ActionDateType”等于当前月份(moment().format('MMMM')//August)

这是我的代码:

var数组=[];
数组=数据。过滤器(函数(el){
var a=el.ActionDateTime
返回力矩(a).format('MMMM')==力矩().format('MMMM'))
})
console.log(数组)
函数时间测试(){
让dateStr='2018-07-31T11:07:11Z'
let dateTs=新日期(dateStr)
设ret=dates.getFullYear().toString()+'+
(dates.getMonth()+1).toString()+'。'+
dates.getDate().toString()
控制台日志(ret)
}

timeTest()
您可以使用JavaScripts
Date
来完成此操作

由于
ActionDateTime
值采用可解析格式,因此可以使用
Date.parse
获取时间戳

let date=date.parse(“2018-07-31T11:07:11Z”)

要获取当前月份,可以使用
newdate().getMonth()

把这些结合起来,你会得到这样的结果

让arr=[{
“ActionDateTime”:“2018-08-31T11:07:11Z”,//
tempDate.setTime(Date.parse(ActionDateTime))&
tempDate.getMonth()==currentMonth);
console.log(filtered)
我已经修改了OP的代码(当然可以正常工作,但我需要删除瞬间依赖项才能在这里工作)

你所做的是对的,但是你需要过滤当月的数据,而你的数据是上月的数据。我添加了3个数据,1个是上月的,2个是当月的,但一个是去年的。注释掉了该年的返回报表,不确定是否需要,但我想它只是被遗忘了

var数据=[
{
“ActionDateTime”:“2018-07-31T11:07:11Z”,
“外部性”:3962770,
“总计”:707.5,
“内部ID”:52858173,
“项目名称”:“Ricciolini意大利面”,
},
{
“ActionDateTime”:“2018-08-02T11:07:11Z”,
“外部性”:3962770,
“总计”:707.5,
“内部ID”:52858173,
“项目名称”:“Ricciolini意大利面”,
},
{
“ActionDateTime”:“2017-08-02T11:07:11Z”,
“外部性”:3962770,
“总计”:707.5,
“内部ID”:52858173,
“项目名称”:“Ricciolini意大利面”,
}];
让数组=[];
设curDate=新日期();
数组=数据。过滤器(函数(el){
设a=新日期(el.ActionDateTime)
//返回a.getMonth()==curDate.getMonth()&&a.getYear()==curDate.getYear()
返回a.getMonth()==curDate.getMonth()
})

console.log(数组)
一切皆有可能。是否尝试过这样做?@AliaksandrPitkevich是对的!您至少应该尝试一下……提示:这肯定需要一个时间范围。@Salketer是的,我尝试过这样做,但它返回一个空数组如果您尝试过,请显示您的代码您只向我们显示了一条记录……以防万一,您显示的记录是从7月份开始的,而我们正处于现在,这可能就是你什么都得不到的原因。我认为不是这样,因为我需要按当前月份过滤包含100个对象的数组,我们是在8月份,你比较当前日期的月份是7月份,将ActionDateTime更改为
“2018-08-31T11:07:11Z”
由于这是公认的答案,您可能需要编辑,以便代码不会返回空数组……这是OP的主要问题。@Salketer感谢您指出。我更新了答案,但是,这只适用于下个月。