0

FOR ループを使用して配列の内容を表示しようとしています。

私が作成したい関数は、目的がFORループを使用することを除いて、underscore.js _.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;
  }
}
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 に答える