У меня есть список функций, созданных с помощью библиотеки List.js. Есть ли способ, которым я мог бы совместить неанглийские персонажи с обычными? Например, в списке содержатся следующие элементы: 'şuncă', 'brânză', 'mărar'. Мне интересно, если есть способ, чтобы найти эти элементы, даже если я ищу без неанглийских символов, например: «sunca», «Брынза», «» mararИспользовать неанглийские символы в List.js
0
A
ответ
0
Используйте filter()
API function и помощник чтобы заменить акцентированные символы в строке с их базовыми версиями.
Вспомогательные функции
// generic accent removal from input string, add any missing characters
var removeAccents = (function() {
var letters1 = "äáàâăëéèêĕüúùûŭöóòôŏÄÁÀÂĂËÉÈÊĔÜÚÙÛŬÖÓÒÔŎßșȘ",
letters2 = "aaaaaeeeeeuuuuuoooooAAAAAEEEEEUUUUUOOOOOssS",
patternLetters = new RegExp("[" + letters1 + "]", "g"),
lookupLetters = {}, letterTranslator;
letters1.split("").forEach(function (letter, i) {
lookupLetters[letter] = letters2[i];
});
letterTranslator = function(match) {
return lookupLetters[match] || match;
};
return function removeAccents(input) {
return input.replace(patternLetters, letterTranslator);
};
})();
// creates a specific filter function for use in List.js
function getAccentInsensitiveFilter(property, search) {
search = removeAccents(search).toLowerCase();
return function (item) {
var value = removeAccents(item.values()[property] || "").toLowerCase();
return value.indexOf(search) > -1;
};
}
, а затем
// filter for "sunca" in the "featureName" property
yourList.filter(getAccentInsensitiveFilter("featureName", "șuncă"));
// remove filter
yourList.filter();
Мне очень жаль, но я никогда не работал раньше с регулярных выражений выражений, и я тоже новичок в List.js. Учитывая код этого плункера: http://plnkr.co/edit/FEs04jxVNdTjiIerYUX4, можете ли вы рассказать мне, как я могу реализовать этот фильтр? Список создается в строке 51 в script.js, и я просматриваю свойства meniu.geojson –
Ух, нет, я не собираюсь отлаживать/писать ваше приложение для вас. Я предлагаю вам пройти через документацию по API и шаг за шагом проделать путь из примеров в документах к небольшим автономным тестовым примерам в ваше крупное веб-приложение. Поймите, как работает API List.js. Напишите гораздо более простую функцию фильтра и примените ее к своему списку. Поймите 'getAccentInsensitiveFilter()'. Вам не нужно полностью понимать 'removeAccents()' на данный момент, просто проверьте, как он реагирует. Извините, но я боюсь, вам придется работать по-своему. – Tomalak