Реализация поиска на странице с помощью фильтрации массива, не обращая внимания на раскладку клавиатуры VUE JS

125
25 декабря 2019, 04:00

Есть функция для поиска. Сейчас фильтрация идет по словам с соответствующей языковой раскладкой клавиатуры. Хотелось бы функцию дополнить: даже если в поиск попадает слово с английской раскладкой, а в массиве данных слова русские, фильтровать массив точно также. Например, при вводе в форме слова "ghbdtn", массив фильтровался и понимал, что я имела в виду "привет"

let filtered = this.movies; 
                filtered = this.movies.filter( 
                m => m.film.toLowerCase().indexOf(this.search) > -1); 
             
        return filtered;

Answer 1

Можно использовать эту функцию!

function auto_layout_keyboard( str ) {
        replacer = {
            "q":"й", "w":"ц", "e":"у", "r":"к", "t":"е", "y":"н", "u":"г",
            "i":"ш", "o":"щ", "p":"з", "[":"х", "]":"ъ", "a":"ф", "s":"ы",
            "d":"в", "f":"а", "g":"п", "h":"р", "j":"о", "k":"л", "l":"д",
            ";":"ж", "'":"э", "z":"я", "x":"ч", "c":"с", "v":"м", "b":"и",
            "n":"т", "m":"ь", ",":"б", ".":"ю", "/":"."
        };     
        return str.replace(/[A-z/,.;\'\]\[]/g, function ( x ){
            return x == x.toLowerCase() ? replacer[ x ] : replacer[ x.toLowerCase() ].toUpperCase();
        });
}
READ ALSO
Кастомизация компонента vue-select

Кастомизация компонента vue-select

Я использую компонент https://sagalbotgithub

131
select и hls.js

select и hls.js

Есть select и вывод трансляции при помощи html5 плеера и hlsjs

104
[].slice.call(arguments) не копирует значение в массив

[].slice.call(arguments) не копирует значение в массив

Имеется простой пример работы функции логирования:

119