当处理数组对象中的递归调用时,我将数组传递给函数和每个正在进行的调用,我希望数组参数为n-1。
我通常使用:
我必须在递归调用之前将这些方法称为行。请查看以下示例。
这是我通常诉诸的地方:
function responseData(urls){
if (urls.length-1){
return;
}
http.get(urls[0], function(res) {
res.setEncoding('utf8');
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
console.log(body.toString());
urls.shift(); // NOTICE THIS LINE
printResponseData(urls);
});
});
}
这种方法有更清洁的替代方案吗?
我可以使用返回值的shift
或pop
消除一个最小化数组大小并返回新近化数组的方法,以便我可以直接将其传递给递归调用吗?
答案 0 :(得分:3)
您可以使用slice
method来获取更小的数组。它不会改变原始参数,而是创建一个新参数。
要获取没有第一个元素的数组,请使用
urls.slice(1)
要获取没有最后一个元素的数组,请使用
urls.slice(0, -1)
答案 1 :(得分:0)
我猜这就是你的意思?
printResponseData(urls.slice(1));
将跳过第一个元素并将其余元素放在数组的末尾
// or
printResponseData(urls.slice(0, -1));
将从数组的开头给出倒数第二个元素。