过滤获取的数据数组

时间:2019-04-09 07:21:28

标签: javascript arrays

我正在从Firebase提取数据并尝试对其进行过滤,以便我可以根据需要以不同的方式显示数据,数据已正确提取并到达,但我正努力在数据到达时进行过滤,在数据之前触发过滤器似乎到了。

  1. 我尝试将所有内容包装在一个promise中(下面的代码)。
  2. 我尝试了异步/等待(下面的代码)
  3. 使用硬编码数据手动测试了过滤器,因此过滤器可以正常工作。

承诺:

eventsToday() {
    let uid = this.$store.state.user.activeUser
    let today = '2034'

    const events = new Promise((resolve, reject) => {
      let fetchedData = getCalanderList(uid)
      resolve(fetchedData)
    })

    events.then(data => {
      console.log('Recieved data:', data.data)
      // Returns Array with 5 Objects

      let filteredData = data.data.filter(item => {
        return item.dateStamp == today
      })

      console.log('Filtered Data:', filteredData)
      // Returns Empty Array
    })

异步/等待:

async eventsToday() {
  let uid = this.$store.state.user.activeUser
  let today = '2034'

  const events = await getCalanderList(uid)
  console.log('Recieved Data', events.data)
  // Returns Array with 5 Objects

  const filteredData = await events.data.filter(item => {
    return item.dateStamp == today
  })
  console.log('Filtered Data:', filteredData)
  // Returns Empty Array 
},

events.data返回包含5个对象的数组:
      [{         日:“星期一”,         dateStamp:“ 2033”       },       {         日:“星期二”,         dateStamp:“ 2034”       },       {         日:“星期三”,         dateStamp:“ 2034”       },       {         日:“星期四”,         dateStamp:“ 2035”       },       {         日:“星期五”,         dateStamp:“ 2035”       }]

1 个答案:

答案 0 :(得分:0)

很有可能您的日期相等性检查失败,您不应该像过滤函数中那样比较日期,您应该首先将它们解析为Date对象,然后使用它们的getTime方法进行比较,如下所示:

date1.getTime() === date2.getTime()