将函数参数传递到数组的位置

时间:2017-12-11 21:20:09

标签: javascript arrays

在循环中递增数组的正确方法是什么?我传入一个非零数字,想要获得数组的正确起始位置。

我可以使用eval开始工作:

arrayPosition = "articleArray[" + (goTo - 1) + "][0]";
window.scroll(eval(arrayPosition), 0);

但我知道这不是正确的编码,现在我正在使用//"use strict";它将不再运行。

我尝试过各种变体:

var x = arrayPosition[goTo - 1][0];
window.scroll(x,0);

但这些都行不通。

function scrollToArticle(referrer, goTo, showSection) {
  // referrer, goTo are required
  var showSection = (typeof showSection) !== "undefined" ? showSection : false;
  var tmpNum = Math.round(articleArray.length / 2);

  if (goTo !== tmpNum && goTo !== articleArray.length) {
    arrayPosition = "articleArray[" + (goTo - 1) + "][0]";
    window.scroll(eval(arrayPosition), 0);
  } else if (goTo === tmpNum) {
    window.scrollTo(mainContentCenterScrollTo - (window.innerWidth / 2), 0);
  } else {
    arrayPosition = "(articleArray[" + (goTo - 1) + "][0]) + (articleArray[" + (goTo - 1) + "][1])";
    window.scrollTo(eval(arrayPosition), 0);
  }
}

2 个答案:

答案 0 :(得分:1)

应该不需要eval,只需要对数组的引用:

var arrayPosition = articleArray[goTo - 1][0];
window.scroll(arrayPosition, 0);

答案 1 :(得分:0)

对不起所有这是我的错误,如上所述,过去到数组的值是一个字符串,而不是一个数字,这就是eval工作和[i-1]没有的原因。