Vue JS поисковый массив - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь найти в массиве строку запроса для объекта 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" ], "имя": "Джейми", "фамилия": "Лиса" }]

Ответы [ 2 ]

2 голосов
/ 15 мая 2019
  1. Остерегайтесь дела phoneNumber != phonenumber
  2. phoneNumber хранится в виде массива, а не строки, поэтому вы не можете его так искать (используйте, например, функцию .includes())
  3. Для форматирования кода рекомендуется хранить self.query.toLowerCase() как переменную или другое вычисляемое свойство
0 голосов
/ 15 мая 2019

Это опечатка .Проверьте поле phoneNumber фильтруется как phonenumber.

Это массив, поэтому вы можете сделать это как,

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

Я думаю, что аналогичным образом вы можете записать его и для электронной почты, потому что этотакже массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...