从Javascript中的对象数组中筛选未定义的对象

从Javascript中的对象数组中筛选未定义的对象,javascript,arrays,object,Javascript,Arrays,Object,我无法从本地存储中装箱的对象数组中排序未定义的。假设此对象数组是localStorage: var arrObject=[{date:undefined,bus_name:Thomas#1};]假设这有两个未定义的日期 我希望能够过滤掉未定义的日期和日期内的总线名称,例如,如果我在对对象进行排序之前对对象数组使用过滤器,那么{date:undefined,bus_name:Thomas#1}将不会包含在要排序的数组中 我将如何做到这一点 谢谢 更新:3/5/20 如果我有两个以上的列,比如说我至

我无法从本地存储中装箱的对象数组中排序
未定义的
。假设此对象数组是localStorage:

var arrObject=[{date:undefined,bus_name:Thomas#1};]
假设这有两个未定义的日期

我希望能够过滤掉未定义的日期和日期内的总线名称,例如,如果我在对对象进行排序之前对对象数组使用过滤器,那么
{date:undefined,bus_name:Thomas#1}
将不会包含在要排序的数组中

我将如何做到这一点

谢谢

更新:3/5/20

如果我有两个以上的列,比如说我至少有5列,我想过滤和排序日期,以及只输出日期和总线名称,我将如何实现这一点

var arrObject=[{日期:未定义,公交车名称:托马斯1,公交车司机:托马斯,时间开始:上午9点,时间结束:下午5点;…]


输出:
{日期:…,总线名称:…};{…}

您可以使用以下方法:

const arobject=[
{日期:未定义,总线名称:'Thomas#1'},
{日期:'2012-02-11',公交车名称:'Thomas#2'},
{日期:'2012-02-02',公交车名称:'Thomas#3'},
{日期:'2012-02-04',公交车名称:'Thomas#4'},
{日期:未定义,总线名称:'Thomas#5'},
{日期:'2012-02-03',公交车名称:'Thomas#6'},
{日期:'2012-02-03',巴士名称:'Thomas#7'},
]
函数格式化日期(str){
//你的格式在这里
让formattedate=“新日期格式”+str
返回格式化日期
}
让newArray=arobject.filter(obj=>{
obj.formattedDate=格式化日期(obj.date)
//行为与obj.date相同!=未定义
返回对象日期
}).排序((a,b)=>{
返回日期.parse(a.Date)-Date.parse(b.Date)
})

log(newArray)您可以使用此方法:

const arobject=[
{日期:未定义,总线名称:'Thomas#1'},
{日期:'2012-02-11',公交车名称:'Thomas#2'},
{日期:'2012-02-02',公交车名称:'Thomas#3'},
{日期:'2012-02-04',公交车名称:'Thomas#4'},
{日期:未定义,总线名称:'Thomas#5'},
{日期:'2012-02-03',公交车名称:'Thomas#6'},
{日期:'2012-02-03',巴士名称:'Thomas#7'},
]
函数格式化日期(str){
//你的格式在这里
让formattedate=“新日期格式”+str
返回格式化日期
}
让newArray=arobject.filter(obj=>{
obj.formattedDate=格式化日期(obj.date)
//行为与obj.date相同!=未定义
返回对象日期
}).排序((a,b)=>{
返回日期.parse(a.Date)-Date.parse(b.Date)
})

log(newArray)我认为您应该为过滤器提供条件字段(一个是日期,另一个是总线名称)

不管怎样,我想澄清一下:——


您期望的结果是哪一个?

我认为您应该为过滤器提供条件字段(一个是日期,另一个是总线名称)

不管怎样,我想澄清一下:——


您期望的结果是哪一个

arobject.filter(e=>e.date)
@danh所以我创建了一个函数来为该数组创建点,我将如何在那里实现它<代码>函数getPointsTable(data,points){for(let i in data){let point=[];let cols=Object.keys(data[0]);for(let j of cols){point.push(j=='date'?Number(new date(data[i][j]):data[i][j];}points.push(point)}返回点}
@MarkAAvila为了确保我理解这个问题,您需要过滤掉
date:undefined
中的所有对象,以便数组只包含有日期的对象?@JoshuaKleveter是的,别忘了它会过滤掉未定义的日期和包含它的总线名称,例如{date:undefined,bus_name:Thomas#1}'不应该在排序数组中
arobject.filter(e=>e.date)
@danh所以我做了一个函数,它将为该数组创建点,我如何在那里实现它。
函数getPointsTable(data,points){for(let I in data){let point=[];let cols=Object.keys(数据[0]);对于(列j){point.push(j=='date'?Number(新日期(数据[i][j]):data[i][j]);}点。push(点)}返回点}
@MarkAAvila为了确保我理解这个问题,您需要过滤掉
date:undefined
中的所有对象,以便数组只包含有日期的对象?@JoshuaKleveter是的,别忘了它会过滤掉未定义的日期和包含它的总线名称,例如{date:undefined,bus_name:Thomas#1}'不应该在排序的数组中这工作得很好!谢谢。如果我想按日期对数组排序,而不是按日期值foo排序,并将其“2012-03-03”和“2013-02-02”改为“2013-02-02”。@MarkAAvila降序或升序?从早到晚(2012-2020)对于example@MarkAAvila日期格式很重要,例如timespan、date()或字符串。您的日期是什么类型的?日期带有“”,因此字符串这非常有效!谢谢。如果我想按日期对数组排序,而不是按日期值foo排序,并将其“2012-03-03”和“2013-02-02”设为栏,该怎么办相反。@MarkAAvila下降或上升?从早期到最晚(2012-2020年)的example@MarkAAvila日期格式很重要,例如timespan、date()或字符串。您的日期是哪种类型的?日期为“”Strings过滤器的目标是过滤掉未定义或空的日期以及bus_名称,因为它们在同一个数组中,所以我假设第三个选项是正确的。我认为您通过这个arObject1.filter((d)=>{return d.date})实现的排序部分。排序((a,b)=>new date(b.date)-new date(a.date))filter的目标是过滤掉未定义或空的日期以及bus_name,因为它们在同一个数组中,所以我假设第三个选项是正确的。我认为您通过此ArObject实现的排序部分
 i) arrObject.filter(e => e.date)  // with this all {date: undefined } contain object will be filter and get data which have actual date value 

 ii) arrObject.filter(e => e.date === undefined) // give filter result with all date undefined  
iii) arrObject.filter(e => e.date === undefined && e.bus_name ) or arrObject.filter(e => e.date && e.bus_name)