显示数组的其余内容

问题描述:

我想使用FOR循环来显示数组的内容。显示数组的其余内容

我想创建的函数与underscore.js _.rest函数类似,只不过目标是使用FOR循环。

rest(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; 
    } 
} 
+0

该方法已经存在于'Array'上。 [它被称为'切片'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice)。 '[1,2,3,4,5] .slice(3)'=>'[4,5]'。 – 2013-02-25 23:51:41

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; 
} 
+0

有没有办法可以使用for循环来做到这一点? – swaggyP 2013-02-25 23:51:45

+0

@ShafiRazzack我想..但是为什么? – 2013-02-25 23:52:34

+0

@ ExplosionPills-'cos这是作业问题的问题? – RobG 2013-02-26 00:30:01

,导致 “不工作” 的部分为j = (len - (n + len)):从本质上讲,你说j = n,和那么你正在循环,而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 method会容易得多。