2015-04-02 2 views
0

У меня есть список функций, созданных с помощью библиотеки List.js. Есть ли способ, которым я мог бы совместить неанглийские персонажи с обычными? Например, в списке содержатся следующие элементы: 'şuncă', 'brânză', 'mărar'. Мне интересно, если есть способ, чтобы найти эти элементы, даже если я ищу без неанглийских символов, например: «sunca», «Брынза», «» mararИспользовать неанглийские символы в List.js

ответ

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(); 
+0

Мне очень жаль, но я никогда не работал раньше с регулярных выражений выражений, и я тоже новичок в List.js. Учитывая код этого плункера: http://plnkr.co/edit/FEs04jxVNdTjiIerYUX4, можете ли вы рассказать мне, как я могу реализовать этот фильтр? Список создается в строке 51 в script.js, и я просматриваю свойства meniu.geojson –

+0

Ух, нет, я не собираюсь отлаживать/писать ваше приложение для вас. Я предлагаю вам пройти через документацию по API и шаг за шагом проделать путь из примеров в документах к небольшим автономным тестовым примерам в ваше крупное веб-приложение. Поймите, как работает API List.js. Напишите гораздо более простую функцию фильтра и примените ее к своему списку. Поймите 'getAccentInsensitiveFilter()'. Вам не нужно полностью понимать 'removeAccents()' на данный момент, просто проверьте, как он реагирует. Извините, но я боюсь, вам придется работать по-своему. – Tomalak

Смежные вопросы