需要检查重复项的历史记录,然后将其删除

时间:2014-02-17 22:39:33

标签: javascript

所以我的问题是,当观看视频时会增加历史记录,但问题是视频多次出现多次也会出现。

以下是代码:

function watch(video) {

    document.location.hash = video["id"];
    updateHistory(video);

    $("#shareitlink").val(document.location.href);

    var html = "<b>{0}</b><br>by {1}<br>{2} | {3} views";
    $("#videoInfo").html(html.format(video["title"], video["uploader"], video["length"], video["views"]));


    ytplayer.loadVideoById(video["id"]);


    getRelated(video["id"], true);
    return false;
    }

    function watchHistoricVideo(videoID) {
    $.each(myhistory, function(key, val) {
        if (val["id"] === videoID) {
            watch(val);
            return false;
        }
    });
    }

    function updateHistory(video) {
    blacklist[video["id"]] = true;
    myhistory.push(video);
    var html = "<li class=\"history\">" +
               "<img class= \"img-rounded\" src=\"{0}\"/>" +
               "<p><b title=\"{2}\"><a class=\"extendedLink\" href=\"javascript:watchHistoricVideo(\'{1}\');\"><span></span>{2}</a></b><br>" +
               "by {3}<br>" +
               "{4} | {5} views</p>" +
               "</li>";

    $("#myhistory").prepend(html.format(video["thumbnail"],
                                           video["id"],
                                           video["title"],
                                           video["uploader"],
                                           video["length"],
                                           video["views"]));

    }

我尝试过使用数组等但不确定我在做什么(我是javascript的新手)。

1 个答案:

答案 0 :(得分:0)

所以如果视频已经在历史中,那么它不应该被添加?或者视频是否应该添加到历史记录中,如果它不是最后播放的视频(即使它在之前的历史记录中)?

场景1:新视频位于历史记录中:

更改:

document.location.hash = video["id"];
updateHistory(video);

收件人:

if ($.grep(myhistory, function (item) { return item["id"] == video["id"]; }).length == 0) {
    document.location.hash = video["id"];
    updateHistory(video);
}

场景2:新视频只是最后一次观看的视频:

更改:

document.location.hash = video["id"];
updateHistory(video);

if (myhistory[myhistory.length - 1]["id"] != video["id"]) {
    document.location.hash = video["id"];
    updateHistory(video);
}