Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поиск и data.json (key insensitive) (https://javascript.ru/forum/jquery/63772-poisk-i-data-json-key-insensitive.html)

jack3dm 28.06.2016 14:45

Поиск и data.json (key insensitive)
 
У меня в data.json есть вот такая запись
{"name":"Frédérique", "id":"123456789"}

Когда ввожу в поле поиска fr то мне спокойно выводит его имя и айди.
Но если я хочу вместо fré ввести fre то мне ничего не показывает.

Как мне поиграть с этим? Что посоветуете?

yazonnile 28.06.2016 15:00

заменять строку fre на регулярку, где символы e,u,o и тд будут меняться на наборы символов.
И соотв искать по регулярке

jack3dm 28.06.2016 16:13

Да, тоже подумал про регулярку, но хочу попробовать так что если находит é или è то автоматом реплейсит в точку, так будет находит всё.

jack3dm 28.06.2016 17:19

C точкой не катит, находит даже согласные буквы, что не есть ок.
Буду тыкать дальше

yazonnile 29.06.2016 02:45

Не понимаю что там тыкать. Вроде описал уже алгоритм :)

dd_smol 29.06.2016 08:00

https://learn.javascript.ru/regexp-c...ets-and-ranges

jack3dm 29.06.2016 14:21

Хорошо, здесь кроется баг.
Возьмем то что у нас есть такие имена:
Frederique, Fréderique, Frèderique
Когда я ввожу в поиске fre мне автоматом должны показываться эти три имени.
Вот как мне это сделать?
$('#SMPsearch').keyup(function() {
		// value of search field
		var a = $('#SMPsearch').val();
		var searchField = a.replace(/[e]/gi, '.');//вот он
		console.log(searchField);

код код код


Как сделать что бы вместо точки он искал e, é, è ?
Как это выглядит?

jack3dm 29.06.2016 14:25

Всё, решил, получилось.
Фак
var searchField = a.replace(/[e]/gi, '[e,é,è]'); // правильно

Спасибо!

jack3dm 29.06.2016 14:36

В конечном итоге у меня код получился так.
Работает без проблем.
Спасибо всем.

// value of search field
		var a = $('#SMPsearch').val();
		var searchField = a.replace(/[a]/gi, '[a,à,á,â,ä,å,ą]').replace(/[e]/gi, '[e,è,é,ê,ë,ę]').replace(/[i]/gi, '[i,ì,í,î,ï]').replace(/[o]/gi, '[o,ö,ô,ò,ó]').replace(/[u]/gi, '[u,û,ù,ú,ü]').replace(/[c]/gi, '[c,ç,ć]').replace(/[l]/gi, '[l,ł]').replace(/[n]/gi, '[n,ñ,ń]').replace(/[s]/gi, '[s,š,ś]').replace(/[y]/gi, '[y,ÿ]').replace(/[z]/gi, '[z,ž,ź,ż]');
		console.log(searchField);


Часовой пояс GMT +3, время: 12:51.