Vue JS搜索数组

时间:2019-05-15 10:36:02

标签: javascript arrays sorting vue.js vuejs2

我正在尝试在数组中搜索json对象上的查询字符串。返回的字段是过滤结果的数组。当前,列表返回的是名称字段,而不是数字字段。

      computed: {
        search: function () {
          let self = this
          let filtered = []

          filtered = self.jcontacts.filter(function(contact){
            return  contact.firstname.toLowerCase().indexOf(self.query.toLowerCase())>=0 ||
                    contact.lastname.toLowerCase().indexOf(self.query.toLowerCase())>=0;
                    contact.email.toLowerCase().indexOf(self.query.toLowerCase()) >=0 ||
                    contact.phonenumber.toLowerCase().indexOf(self.query.toLowerCase()) >=0;
            }
          );
          return this.contacts = filtered
        }
      },
    }

在搜索方法中过滤的方法未显示该数字。 json的示例如下:

  

[     {         “ id”:1           “电话号码”: [               “ 3908902”           ],           “电子邮件”:[               “ jamie@fox.com”           ],           “ firstname”:“ Jamie”,           “ lastname”:“ Fox”     }]

2 个答案:

答案 0 :(得分:2)

  1. 当心案件phoneNumber != phonenumber
  2. phoneNumber存储为数组而不是字符串,因此您无法像这样查找(例如,使用.includes()函数)
  3. 对于代码格式化,请考虑将self.query.toLowerCase()存储为变量或其他计算出的属性

答案 1 :(得分:0)

这是一个错字。签出字段phoneNumber被过滤为电话号码。

这是一个数组,因此您可以这样做

contact.phoneNumber.forEach( number => { 
   if(number.toLowerCase().indexOf(self.query.toLowerCase()) >=0) 
      return true;
});

我认为您同样可以将其记录下来以发送电子邮件,因为它也是一个数组。