2013-02-25 74 views
0

我想使用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

回答

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

0

,導致 「不工作」 的部分爲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會容易得多。