【问题标题】:Filtering undefined or empty strings from array of objects in Javascript从Javascript中的对象数组中过滤未定义或空字符串
【发布时间】:2020-03-05 18:38:40
【问题描述】:

所以我无法创建一个函数来过滤和排序日期及其数据以放置在对象数组中。我遇到的问题是不同但相似的情况。原始问题取自这里:Filtering undefined from array of objects in Javascript

假设 var arrObject 在一个数组中有两个以上的项目。请参阅下面的代码。我想过滤任何空字符串或未定义的值以及数组中的任何项目,然后按 asc 排序。按日期排序。在新数组中,我只想输出日期和总线名称。注意数组中的名称是不同的,我想用不同的名称命名,例如这个输出:

{Date: '2012-02-11', busName: 'Thomas #2'}. ...

我将如何做到这一点?

谢谢!

{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',
]

function fancySort(array){
   let arrayCopy = array.slice(0);
  //your sort logic can be replaced here
  arrayCopy.sort();

  return arrayCopy
}

let newArray = arrObject.filter( obj => {
  //behave same as obj.date != undefined
  return obj.date
})

let sortedDates = fancySort(newArray.map(obj => Date.parse(obj.date)));

let sortedObjArray = sortedDates.map( date=>{
  let tempObj;
  newArray.some( na=> {
    tempObj = na;
    return Date.parse(na.date) == date
  })
  return tempObj;
})

console.log(sortedObjArray);```

【问题讨论】:

  • 请添加想要的结果。
  • 对象中没有假值(空格不是假值)..?
  • dataSet.filter(x => x.date.trim().length > 0) - 仅当 date1. not undefined 2. is type of string 3. date is known to either be empty or white space

标签: javascript arrays date object undefined


【解决方案1】:

您可以过滤不需要的部分,映射具有所需属性的新对象并按date 对数组进行排序。

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);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 举个例子,该数组存储在包含 var 数组的本地存储中,我为它创建了一个 var 以 JSON 解析本地存储,现在我将如何返回本地中的列名存储
  • 不知道。没有使用本地存储。这可能是另一个问题。
猜你喜欢
  • 1970-01-01
  • 2021-10-14
  • 2015-03-24
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 2016-05-30
  • 1970-01-01
相关资源
最近更新 更多