我正在尝试使用FOR循环来显示数组的内容。
我想要创建的函数类似于underscore.js _.rest函数,但目标是使用FOR循环。
休息(anyArray,n);
所以,如果我要输入“休息([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 :(得分: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;
}
答案 1 :(得分: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会更容易。