我在从本地存储创建的对象数组中整理undefined
时遇到麻烦。假设该对象数组为localStorage:
var arrObject = [{date: undefined, bus_name: Thomas #1};...]
假设这有2个未定义的日期。
我希望能够过滤出未定义的日期和该日期内的bus_name,因此,例如,如果在对对象进行排序之前将过滤器用于对象数组,则{date: undefined, bus_name: Thomas #1}
将不会包含在要排序的数组中。
我该怎么做?
谢谢!
更新:3/5/20
如果我有多于2列,比如说我至少有5列,我要如何过滤和排序日期以及仅输出日期和bus_name
var arrObject = [{date: undefined, bus_name: Thomas #1, bus_driver: Thomas, time_start: 9AM, time_end: 5PM};...]
输出:{date: ..., bus_name:...}; {...}
答案 0 :(得分:2)
我认为您应该为过滤器提供条件字段(一个是日期,另一个是bus_name)
无论如何,我想弄清楚:-
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)
您期望的结果之一
答案 1 :(得分:1)
您可以使用此方法:
const arrObject = [
{date: undefined, bus_name: 'Thomas #1'},
{date: '2012-02-11', bus_name: 'Thomas #2'},
{date: '2012-02-02', bus_name: 'Thomas #3'},
{date: '2012-02-04', bus_name: 'Thomas #4'},
{date: undefined, bus_name: 'Thomas #5'},
{date: '2012-02-03', bus_name: 'Thomas #6'},
{date: '2012-02-03', bus_name: 'Thomas #7'},
]
function formatTheDate (str){
//your format here
let FormatedDate = "new Date format" + str
return FormatedDate
}
let newArray = arrObject.filter( obj => {
obj.formattedDate = formatTheDate(obj.date)
//behave same as obj.date != undefined
return obj.date
}).sort((a,b)=>{
return Date.parse(a.date) - Date.parse(b.date)
})
console.log(newArray);
编辑:更新了答案以根据日期返回排序结果;