Arttur
@Arttur
Приложения на JavaScript

Как искать сразу в нескольких столбцах?

Всем привет. Делаю поиск по таблице, нужно искать сразу во всех столбцах, подскажите пожалуйста, как правильно организовать поиск сразу по всем столбцам? Codepen с текущей реализацией
new Vue({
  el: "#app",
  data: {
    search: "",
    arr: [
      {"id":"c1f37c39-9586-49b6-b2f8-003f79bd45af","eMail":null,"phone":"+79139112556","name":null,"sensorCount":1},
      {"id":"dad19452-33a0-4594-9504-009303c99ef9","eMail":null,"phone":"+79131342975","name":null,"sensorCount":1},
      {"id":"3f6c9dc2-c528-416c-bf95-02207c8a9bfe","eMail":null,"phone":"+79433049972","name":null,"sensorCount":1},
      {"id":"66b3b477-ffa4-4742-bcda-03a4fe3ca500","eMail":null,"phone":"+79537018692","name":null,"sensorCount":1},
      {"id":"948cb2aa-3308-4bab-a108-03fc98b6c403","eMail":null,"phone":"+79639354095","name":null,"sensorCount":1},
      {"id":"9698073f-9af8-4205-98a6-04047ea71df3","eMail":"ValenkoSYu@sib.ru","phone":null,"name":null,"sensorCount":1},
      {"id":"9adea138-a8fd-436e-a0e2-0422638a313e","eMail":null,"phone":"+79737573860","name":null,"sensorCount":1},
      {"id":"246a8a4b-a05d-4fb6-b99d-0472ebf3824d","eMail":null,"phone":"+79839408990","name":null,"sensorCount":1}
    ]
  },
  computed: {
    searchArr() {
      return this.arr.filter(item => {
        for (let i in item) {
          if (item[i] && typeof item[i] === "string") {
            return item[i].toLowerCase().includes(this.search.toLowerCase());
          }
        }
      })
    }
  }
});
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
Помог - отметь решением \( ゚ヮ゚)/
return this.arr.filter(item => Object.values(item).some(value => value && value.toString().toLowerCase().includes(this.search.toLowerCase())));


UPD:
Попробуйте при помощи RegExp, тесты показывают, что скорость выше.
searchArr() {
	const expression = new RegExp(`.*${this.search}.*`, 'i');

	return this.arr.filter(item => Object.values(item).some(value => expression.test(value)));
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
search = '6393'

arr.filter(el => 
  Object.values(el).some(key => 
    key && String(key).toLowerCase().includes( search.toLowerCase() )
  )
)

// 0: {id: "948cb2aa-3308-4bab-a108-03fc98b6c403", eMail: null, phone: "+79639354095", name: null, sensorCount: 1}
// length: 1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы