Фильтрация неопределенного из массива объектов в Javascript - PullRequest
0 голосов
/ 03 марта 2020

У меня возникли проблемы с сортировкой undefined из массива объектов, созданных из локального хранилища. Предположим, что этот массив объектов является localStorage:

var arrObject = [{date: undefined, bus_name: Thomas #1};...] Предположим, у него есть 2 даты, которые не были определены.

Я хочу иметь возможность отфильтровать дату, которая не определена, и bus_name, которое находится внутри даты, поэтому, например, если бы я использовал фильтр для массива объектов перед их сортировкой, то {date: undefined, bus_name: Thomas #1} не будет включен в массив, который будет отсортирован.

Как бы я это сделал sh это?

Спасибо!

ОБНОВЛЕНИЕ: 3/5/20

Как бы я выполнил sh это, если у меня более 2 столбцов, скажем, я иметь не менее 5, я хочу фильтровать и сортировать дату, а также только дату и имя шины

var arrObject = [{date: undefined, bus_name: Thomas #1, bus_driver: Thomas, time_start: 9AM, time_end: 5PM};...]

Вывод: {date: ..., bus_name:...}; {...}

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

я думаю, вы должны предоставить фильтр с полем условия (одно - дата, другое - имя_буса)

В любом случае, я хочу выяснить, что: -

 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 голос
/ 03 марта 2020

Вы можете использовать этот метод:

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);

РЕДАКТИРОВАТЬ: обновил ответ, чтобы вернуть отсортированный результат на основе даты;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...