我有这段代码:

  //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,否则其余代码将不起作用。

最佳答案

在我看来,您想要从原始数组中获取slice。我不确定您要哪个 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);

关于javascript - javascript数组重新开始计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30171868/

10-16 05:27