我的功能会停止将相同ID添加到历史记录中的视频,但我如何才能将视频移到前面。
因此它基本上要么将数组重新排序到最后一次观看,要么将视频添加到数组中。
function watch(video) {
if ($.grep(myhistory, function (item) {
return item["id"] == video["id"];
}).length == 0) {
document.location.hash = "!track=" + video["id"];
updateHistory(video);
}
updateFavourite(video);
$("#shareitlink").val("http://shuzel.com/#!track=" + video["id"]);
document.title = "SHUZEL | " + video["title"];
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 updateHistory(video) {
blacklist[video["id"]] = true;
myhistory.push(video);
var html = "<li class=\"saved\">" + "<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"]));
setVideo(video);
}
提前致谢。
答案 0 :(得分:0)
取决于您的电影数组,例如:
var array = ["one", "two", "three"]
您可以检查当前电影是否在数组中,如果是,splice
然后unshift
将其放在前面,例如:
var array = ["one", "two", "three"],
i = array.indexOf("three"),
temp = array[i];
if (i > -1) {
array.splice(i, 1);
array.unshift(temp);
}
您的代码非常密集,因此您需要确定在何处实现代码。
答案 1 :(得分:0)
// do whatever logic you have to get index of
// array element to move to front. Using i=1 as example
var i = 1;
// example array to affect
var array = ['a','b','c'];
// remove element i (2nd element) and add as first element
array.unshift(array.splice(i,1)[0]);
// array is now ['b','a','c']
答案 2 :(得分:0)
array.indexOf会告诉你它是一个数组,如果在数组中则返回项索引,否则返回-1。
indexOf不能用作IE8或ealier的方法,在这种情况下添加以下内容
if(!Array.indexOf){
Array.prototype.indexOf = function(obj){
for(var i=0; i<this.length; i++){
if(this[i]===obj){
return i;
}
}
return -1;
}
}
如果不在数组中,那么Crayon Violet建议使用array.unshift添加到数组的前面。
如果在数组中,Crayon Violet建议使用array.slice(index,1)删除item,并使用array.unshift添加到数组的前面。
答案 3 :(得分:0)
Array.prototype.addRecent = function(item){
var index = this.indexOf(item);
this.unshift(index > -1 ? this.splice(index, 1)[0] : item);
return this;
};
alert([].addRecent("a").addRecent("b").addRecent("c").addRecent("b"));