Site icon Init HTML

Tìm kiếm bằng tiêu đề trong mảng JavaScript

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!

Exit mobile version