Поиск без учёта регистра Google Apps Script
Делаю гугл-приложение. В этом приложении есть поиск по имени и фамилии в гугл-таблице. Вот в таком виде описк работает отлично:
// ==========================
// Поиск по фамилии и имени
// ==========================
function searchTenants(surname, name) {
var sheet = SpreadsheetApp.openById('1q4zhX_xXiWDQqy7lb5U-EFu6F29CpZI5VKSI93gj').getSheetByName('DB');
var data = sheet.getDataRange().getValues();
var results = [];
// Пропускаем заголовок
for (var i = 1; i < data.length; i++) {
var row = data[i];
if (row[2] === surname && row[3] === name) {
results.push([i + 1].concat(row)); // Добавляем индекс строки в массив результатов
}
}
return results;
}
Но нужно сделать поиск, чтобы он игнорировал пробелы; игнорировал регистр; искал по первым введеным буквам фамилии или имени. Вот такое работает также как и код выше - значения введенные точно как в гугл-таблице ищет, но при других условиях не ищет:
// ==========================
// Поиск жильца по фамилии и имени
// ==========================
function searchTenants(surname, name) {
var sheet = SpreadsheetApp.openById('1q4zhX_xXiWDQqy7lb5U-EFu6F29CpZI5VKSI93gj').getSheetByName('DB');
var data = sheet.getDataRange().getValues();
var results = [];
// Преобразуем фамилию и имя в нижний регистр, убираем пробелы и используем только начальные буквы
surname = surname.trim().toLowerCase();
name = name.trim().toLowerCase();
// Пропускаем заголовок
for (var i = 1; i < data.length; i++) {
var row = data[i];
var tenantSurname = row[2].trim().toLowerCase(); // Фамилия в БД
var tenantName = row[3].trim().toLowerCase(); // Имя в БД
// Поиск по начальным буквам фамилии или имени
if ((surname && tenantSurname.startsWith(surname)) || (name && tenantName.startsWith(name))) {
results.push([i + 1].concat(row)); // Добавляем индекс строки в массив результатов
}
}
return results;
}