【问题标题】:Vue - How to Filter More Than One Value with JavascriptVue - 如何使用 Javascript 过滤多个值
【发布时间】:2021-06-16 22:20:21
【问题描述】:

我有一个数据表,我想向它添加搜索/过滤功能。我设法部分做到了,但现在我只能过滤数组中的一个元素。这是数组;

    dataArray: [
          { date: "12.02.2021", time: "Aaa", level: '1111', service: 'Zzzz', description: '124-362' },
          { date: "13.02.2021", time: "Bbbb", level: '2222', service: 'Yyyyy', description: '748-987' },
          { date: "14.02.2021", time: "Cccc", level: '3333', service: 'Xxxxx', description: '012-365' },
          { date: "15.02.2021", time: "Dddd", level: '4444', service: 'Qqqqq', description: '271-016' },
          { date: "16.02.2021", time: "Eeee", level: '5555', service: 'Tttt', description: '341-222' },
          { date: "17.02.2021", time: "Ffff", level: '6666', service: 'Uuuu', description: '932-324' },
          { date: "18.02.2021", time: "Gggg", level: '7777', service: 'Vvvvv', description: '459-974' },
          { date: "19.02.2021", time: "Hhhh", level: '8888', service: 'Wwwww', description: '224-569' },
          { date: "20.02.2021", time: "Jjjj", level: '9999', service: 'Mmmm', description: '617-619' },
          { date: "21.02.2021", time: "Kkkk", level: '10101010', service: 'Nnnnn', description: '825-379' },
        ],

这里是 HTML;

          <tr v-for="(dataArray, i) in filteredItems" :key="i">
            <p class="table-iterator">{{i--}}</p>
            <td class="table-row text-left">{{connectivityLogs.date}}</td>
            <td class="table-row text-center">{{connectivityLogs.time}}</td>
            <td class="table-row text-center">{{connectivityLogs.level}}</td>
            <td class="table-row text-center">{{connectivityLogs.service}}</td>
            <td class="table-row text-right">{{connectivityLogs.description}}</td>
          </tr>

&lt;input type="text" v-model="search"&gt;上方还有一个输入,我在Vue脚本的data部分定义了search变量。

最后,这是我使用计算属性过滤元素(仅时间)的方法;

computed: {
  filteredItems(){
    return this.dataArray.filter(dataArray => {
      return dataArray.time.toLowerCase().indexOf(this.search.toLowerCase()) > -1
    })
  }
}

我的问题是,我怎样才能对所有这些进行过滤操作?现在只能过滤时间了。

【问题讨论】:

标签: javascript vue.js filter


【解决方案1】:

此答案假设您需要一个可以搜索所有字段的搜索框。

在每个字段中搜索一个值:

computed: {
  filteredItems(){
    return this.dataArray.filter(dataArray => {
      return Object.values(dataArray).some(value => {
        value.toLowerCase().indexOf(this.search.toLowerCase()) > -1
      })
    })
  }
}

上面使用Object.values()来获取每个对象的值作为一个数组,然后检查字段的some()是否包含搜索文本。

【讨论】:

  • @LawrenceCherone 是的,好点,我想要一种快速而肮脏的方法。我会更新的。
猜你喜欢
  • 2021-04-02
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 2019-11-17
相关资源
最近更新 更多