[英]Use non-english characters in List.js
I have a list of features created with List.js library. 我有一个用List.js库创建的功能列表。 Is there any way I could match non-english characters with regular ones?
有什么办法可以使非英语字符与常规字符匹配? For example, the list contains this elements: 'șuncă', 'brânză', 'mărar'.
例如,列表包含以下元素:'șuncă','brânză','mărar'。 I'm curious if there's a way to find these elements even if I'm searching without the non-english characters, like this: 'sunca', 'branza', 'marar'
我很好奇即使我没有非英语字符也能找到这些元素,例如:'sunca','branza','marar'
Use the filter()
API function and a helper function to replace accented characters in a string with their base versions. 使用
filter()
API函数和一个辅助函数将字符串中的重音字符替换为其基本版本。
Helper functions 辅助功能
// 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;
};
}
and then 接着
// filter for "sunca" in the "featureName" property
yourList.filter(getAccentInsensitiveFilter("featureName", "șuncă"));
// remove filter
yourList.filter();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.