Ví dụ ta có mảng các bài viết như sau.
var arr = [ {title: '101 Lần Đoạt Hôn 101 Lần Đoạt Hôn', img: 'img1.jpg', chap: 'Chap 16'}, {title: '101 Mỹ Nam Của Vương Phi Béo Phì', img: 'img2.jpg', chap: 'Chap 26'}, {title: '101 Phương Pháp Của Tổng Tài', img: 'img3.jpg', chap: 'Chap 1'}, {title: '99 Phương Pháp Giam Cầm Tình Yêu', img: 'img4.jpg', chap: 'Chap 5'}, {title: '999 Nụ Hôn Bá Đạo Của Nam Thần', img: 'img5.jpg', chap: 'Chap 73'}, {title: 'Ác Ma Bá Yêu', img: 'img6.jpg', chap: 'Chap 42'} ];
Để tìm được tiếng Việt có dấu, đầu tiên ta cần phương thức chuyển tất cả về không dấu.
function removeAccents(str) { var accentsMap = [ "aàảãáạăằẳẵắặâầẩẫấậ", "AÀẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬ", "dđ", "DĐ", "eèẻẽéẹêềểễếệ", "EÈẺẼÉẸÊỀỂỄẾỆ", "iìỉĩíị", "IÌỈĨÍỊ", "oòỏõóọôồổỗốộơờởỡớợ", "OÒỎÕÓỌÔỒỔỖỐỘƠỜỞỠỚỢ", "uùủũúụưừửữứự", "UÙỦŨÚỤƯỪỬỮỨỰ", "yỳỷỹýỵ", "YỲỶỸÝỴ" ]; for (var i = 0; i < accentsMap.length; i++) { var re = new RegExp('[' + accentsMap[i].substr(1) + ']', 'g'); var char = accentsMap[i][0]; str = str.replace(re, char); } return str; }
Tìm kiếm như sau.
var found = []; var foundLimit = 15; // Giới hạn số lượng kết quả var foundCount = 1; // Đếm số kết quả var minStrLength = 3; // Nhập ít nhất 3 kí tự for (var i = 0; i < arr.length; i++) { var sto2Search = 'nam thần'; if (foundCount <= foundLimit && !(sto2Search.length < minStrLength)) { if (removeAccents(arr[i]['title']).toLowerCase().includes(removeAccents(sto2Search.toLowerCase()))) { found.unshift(arr[i]); foundCount++; } } } document.write(JSON.stringify(found));
Chúc các bạn thành công!