javascript数组重启计数

时间:2015-05-11 15:34:41

标签: javascript html arrays

我有这段代码:

  //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,否则其余代码将无效。

3 个答案:

答案 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];
}