在List.js中使用非英语字符

Use non-english characters in List.js

本文关键字:英语 字符 List js      更新时间:2023-09-26

我有一个用list.js库创建的特性列表。有没有什么方法可以让非英语字符和普通字符相匹配?例如,该列表包含以下元素:"șuncă"、"brânză'"、"mărar"。我很好奇,即使我在搜索时没有非英语字符,是否有办法找到这些元素,比如:"sunca"、"branza"、"marar"

使用filter() API函数和助手函数将字符串中的重音字符替换为其基本版本。

助手功能

// 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();