我有这段代码:
//var data.name is declared somewhere else, e.g. "Sherlock". It changes often.
recents[recents.length] = data.name;
idThis = "recent" + recents.length;
if(recents.length >= 7) {
recents[0]=recents[7];
recents[1]=recents[8];
recents[2]=recents[9];
recents[3]=recents[10];
recents[4]=recents[11];
recents[5]=recents[12];
recents[6]=recents[13];
recents[7]=recents[14];
recents[0]=recents[15];
recents[1]=recents[16];
recents[2]=recents[17];
//etc
idThis = "recent" + (recents.length -7);
}
document.getElementById(idThis).innerHTML = data.name;
我的问题是如何自动化recents[0]=recents[7]
recents[1]=recents[8]
等?
关键是recent
id不能高于6,否则其余代码将无效。
答案 0 :(得分:4)
听起来我想要从原始数组中获取slice。我不确定你想要哪个切片,但是这里有如何获得前8个项目和最后8个项目,也许其中一个是你想要的:
// Get the first 8 items from recents.
var first8 = recents.slice(0, 8);
// Get the last 8 items from recents.
var last8 = recents.slice(-8);
// first8 and last8 now contain UP TO 8 items each.
当然,如果您的recents
数组没有8个项目,则slice
的结果将少于8个项目。
如果要删除recents
数组中的范围,可以使用splice
:
// Delete the first 8 items of recents.
recents.splice(0, 8);
// recents[0] is now effectively the value of the former recents[8] (and so on)
您还可以使用splice
的返回值来获取已删除的项目:
// Delete and get the first 8 items of recents.
var deletedItems = recents.splice(0, 8);
// You could now add them to the end, for example:
recents = recents.concat(deletedItems);
答案 1 :(得分:1)
<强> INIT:强>
var fruits = [“Banana”,“Orange”,“Apple”,“Mango”];
添加最后一个元素:
fruits.push("Kiwi");
香蕉,橘子,苹果,芒果,猕猴桃
删除第一个元素:
fruits.shift();
橘子,苹果,芒果,猕猴桃
<强> SOLUTION:强>
function add(fruit) {
if(fruits.length > 6) {
fruits.shift();
fruits.push(fruit);
}
}
答案 2 :(得分:0)
这样做:
for (i = 0; i < recents.length; i++) {
recents[i]=recents[i % 7];
}