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!
Bình luận