0

从参考链接,我能够使排序和列正常工作。现在有两件事我需要协助。

首先,如何将列的名称更改为我选择的名称(例如,日期 -> 日期和 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 中。

遵循以下链接中的标准!

参考这个链接:Filtering undefined or empty strings from array of objects in Javascript

4

1 回答 1

1

通过一些调整:

  • 通过添加检查是否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)不是很常见的做法——首字母大写通常保留给构造函数/类的名称

于 2020-03-06T14:55:41.607 回答