Я работал над интересной ситуацией, которую не смог определить, почему она работает не так, как ожидалось. Код, который у меня есть, является последней попыткой, и я считаю, что он близок, просто что-то упущено. Если бы кто-нибудь мог мне помочь, это было бы здорово. (Это волонтерский проект, который я делаю для агентства по усыновлению животных)
Вот настройка:
У меня есть база данных Firebase, которая имеет ок. 7000 усыновителей. Они разбиты на объект, например, так:
{
ApplicantCellPhone: "ADOPTERS ACTUAL INFORMATION",
ApplicantCity: "ADOPTERS ACTUAL INFORMATION",
ApplicantDLNum: "ADOPTERS ACTUAL INFORMATION",
ApplicantEmail: "ADOPTERS ACTUAL INFORMATION",
ApplicantEmployerName: "ADOPTERS ACTUAL INFORMATION",
ApplicantFirstName: "ADOPTERS ACTUAL INFORMATION",
ApplicantHomePhone: "ADOPTERS ACTUAL INFORMATION",
ApplicantLastName: "ADOPTERS ACTUAL INFORMATION",
ApplicantStreet: "ADOPTERS ACTUAL INFORMATION",
ApplicantZip: "ADOPTERS ACTUAL INFORMATION",
CoapplicantCellPhone: "ADOPTERS ACTUAL INFORMATION",
CoapplicantCity: "ADOPTERS ACTUAL INFORMATION",
CoapplicantDLNum: "ADOPTERS ACTUAL INFORMATION",
CoapplicantEmail: "ADOPTERS ACTUAL INFORMATION",
CoapplicantEmployerName: "ADOPTERS ACTUAL INFORMATION",
CoapplicantFirstName: "ADOPTERS ACTUAL INFORMATION",
CoapplicantHomePhone: "ADOPTERS ACTUAL INFORMATION",
CoapplicantLastName: "ADOPTERS ACTUAL INFORMATION",
CoapplicantStreet: "ADOPTERS ACTUAL INFORMATION",
CoapplicantZip: "ADOPTERS ACTUAL INFORMATION",
}
Теперь у меня есть окно поиска, подобное этому:
<b-form-input id="searchInputString" v-model="searchInputString" name="searchInputString" type="text" placeholder="Search Adopters" class="form-control mb-3" autocomplete="off" @keyup.native="filterAdopters" />
С помощью @keyup собирается эта функция:
filterAdopters: function(event) {
this.$nextTick(() => {
this.adoptersFilteredDataCollection = {}
this.spiltFilteredData = []
if (!this.isNullOrEmpty(this.searchInputString)) {
let searchArray = this.searchInputString.split(" ")
console.log('Search Array =>', searchArray)
for (let i = 0; i <= searchArray.length; i++) {
this.spiltFilteredData.push(this.allAdoptersData.filter(s =>
s.ApplicantCellPhone.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantCity.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantDLNum.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantEmail.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantEmployerName.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantFirstName.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantHomePhone.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantLastName.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantStreet.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.ApplicantZip.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantCellPhone.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantCity.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantDLNum.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantEmail.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantEmployerName.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantFirstName.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantHomePhone.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantLastName.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantStreet.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1 ||
s.CoapplicantZip.toLowerCase().indexOf(this.searchInputString.toLowerCase()) > -1
))
}
}
else {
this.searchInputString = ''
this.spiltFilteredData = {}
}
console.log('spiltFilteredData', this.spiltFilteredData)
})
},
Я не хочу ничего предполагать, поэтому я просто хочу объяснить, что я делаю ...
Удаляя let searchArray = this.searchInputString.split ("") Если я наберу в Kimberly, он вернет 345 результатов, теперь я хочу отфильтровать по пробелу, чтобы начать поиск заново, из 345 результатов. Поэтому, если я введу Кимберли Брауна, он должен вернуть 13 результатов, теперь, нажав еще раз, из 13 результатов я начну печатать в Хиллсборо (это город), он вернет 2 результата, затем я наберу 345 Center St затем вернет 1 результат с правильным Кимберли. Я хотел бы преобразовать их в массив, а затем использовать include, хотя это не так, как я думал ... Есть предложения?