0

我正在尝试使用 FOR 循环来显示数组的内容。

我要创建的函数类似于 underscore.js _.rest 函数,但目标是使用 FOR 循环。

休息(anyArray,n);

所以如果我输入“rest([1,2,3,4,5], 3);”,我想返回“[4,5]”。

这是我所拥有的,但它不起作用:

rest: function (anyArray, n) {
  var isArray = (anyArray instanceof Array),
    isNum = (typeof n === 'number'),
    result = new Array,
    valRange = (n >= 0);
  if (isArray && isNum) {
    for (len = anyArray.length, i = 0, j = (len - (n + len)); i < j, n < len; i++, j++) {
      result[i] = anyArray[j];
    }
    return result;
  }
}
4

2 回答 2

1
rest: function (anyArray, n) {
    return anyArray.slice(n);
}

rest: function (anyArray, n) {
    var output = [];
    for (; n < anyArray.length; n++) {
        output.push(anyArray[n]);
    }
    return output;
}
于 2013-02-25T23:50:17.100 回答
0

导致“不工作”的部分是j = (len - (n + len)):本质上,你说j = n,然后你正在循环 while i < j。我希望你真正想要的是j < len. 此外,您应该添加var关键字:

rest: function(anyArray, n){
    var isArray = (anyArray instanceof Array),
        isNum = (typeof n === 'number'),
        result = [];
    if (isArray && isNum) {
        for (var len = anyArray.length, i = 0, j = n; j < len; i++, j++) {
            result[i] = anyArray[j];
        }
        return result;
    }
    // else?
}

当然,仅使用本机slice方法会容易得多。

于 2013-02-25T23:58:10.257 回答