Удаление отфильтрованного массива объектов Javascript - PullRequest
0 голосов
/ 06 марта 2020

По ссылочной ссылке мне удалось настроить сортировку и колонку. Теперь есть 2 вещи, по которым мне нужна помощь.

Во-первых, как изменить имя столбца на выбранное мной имя (например, date -> Date, и bus_name -> busName.

Во-вторых, это удалить отфильтрованные массивы Я использовал принятый ответ, и он работал, но он отфильтровал пустую строку в конце массива. Я хочу удалить все пустые строки и / или неопределенные значения в массиве, не затрагивая исходный массив, который я отобразил.

Это был принятый ответ:

var array = [{ date: " ", bus_name: 'Thomas #1', driver_name: 'Sam', time_start: '9AM', time_end: '5PM' }, { date: '2012-02-11', bus_name: 'Thomas #2', driver_name: 'Samantha', time_start: '8AM', time_end: '4PM' }, { date: '2011-02-02', bus_name: 'Thomas #3', driver_name: 'Peter', time_start: '12PM', time_end: '7PM' }, { date: '2010-06-04', bus_name: 'Thomas #4', driver_name: 'Eddie', time_start: '11AM', time_end: '6PM' }, { date: " ", bus_name: 'Thomas #5', driver_name: 'Raul', time_start: '4AM', time_end: '1PM' }, { date: '2014-04-03', bus_name: 'Thomas #6', driver_name: 'Jessie', time_start: '5AM', time_end: '2PM' }],
    result = array
        .filter(o => o.date !== ' ')
        .map(({ date, bus_name }) => ({ date, bus_name }))
        .sort((a, b) => a.date.localeCompare(b.date));

console.log(result);

В части фильтра я хочу иметь возможность фильтровать и удалять '', 0 и / или неопределенные значения из сопоставляемого массива. Как бы я это сделал? Я рекомендую использовать принятый ответ, который я использовал. Массив, который я использую, находится в localStorage.

Следуйте критериям по ссылке ниже!

Ссылка на эту ссылку: Фильтрация неопределенных или пустых строк из массива объектов в Javascript

1 Ответ

1 голос
/ 06 марта 2020

С несколькими настройками:

  • Проверьте, что o.date верно (не null, undefined, false, 0, "" ...), добавив o.date &&
  • Использование полного литерала объекта (вместо ярлыка ES6) для определения других имен свойств и соответствующей адаптации обратного вызова sort

var array = [{ date: " ", bus_name: 'Thomas #1', driver_name: 'Sam', time_start: '9AM', time_end: '5PM' }, { date: '2012-02-11', bus_name: 'Thomas #2', driver_name: 'Samantha', time_start: '8AM', time_end: '4PM' }, { date: '2011-02-02', bus_name: 'Thomas #3', driver_name: 'Peter', time_start: '12PM', time_end: '7PM' }, { date: '2010-06-04', bus_name: 'Thomas #4', driver_name: 'Eddie', time_start: '11AM', time_end: '6PM' }, { date: " ", bus_name: 'Thomas #5', driver_name: 'Raul', time_start: '4AM', time_end: '1PM' }, { date: '2014-04-03', bus_name: 'Thomas #6', driver_name: 'Jessie', time_start: '5AM', time_end: '2PM' }],
    result = array
        .filter(o => o.date && o.date !== ' ')
        .map(({ date, bus_name }) => ({ arrival: date, busName: bus_name }))
        .sort((a, b) => a.arrival.localeCompare(b.arrival));

console.log(result);

Примечание: я использовал arrival в качестве имени, поскольку использование имени, начинающегося с заглавной буквы (например, Date), не очень распространенная практика - начальные прописные чаще зарезервированы для имен конструкторов / классов

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