我是节点和回调的新手.我试图将一个组列表拆分成一个数组.这些组用逗号分隔或用" - "分隔.最后一个意味着它是一个间隔,所以如果有22-25则意味着:22,23,24,25.我尝试了以下代码.
var groups = ["13-16","21-24","33"];
var splitgroups = function(groups, callback){
var result = [];
console.log(groups.length);
for(var i=0; i<groups.length; i++){
var cbr = callback(groups[i]);
result = result.concat(cbr);
}
return result;
}
var handlegroupinterval = function(group){
var temparr = [];
try {
temparr = group.split('-');
}
catch(err) {
console.log(err.message);
}
console.log("groups split: "+group);
if(temparr.length>1){
var lowerbound = parseInt(temparr[0]);
var upperbound = parseInt(temparr[1]);
temparr = [];
for(var j=lowerbound; j<=upperbound; j++){
temparr.push(j);
}
}
return temparr;
}
var tempgroups = splitgroups(groups, function(res){handlegroupinterval(res)});
console.log("end: " +tempgroups);
Run Code Online (Sandbox Code Playgroud)
当我在"返回temparr"上设置断点时,我得到了正确的值.但是在第一个函数中,结果是未定义的.有人知道这个问题吗?
你不是return来自回调.
只需更换
var tempgroups = splitgroups(groups, function(res){handlegroupinterval(res)});
Run Code Online (Sandbox Code Playgroud)
同
var tempgroups = splitgroups(groups, function(res){ return handlegroupinterval(res); });
Run Code Online (Sandbox Code Playgroud)
注意return在回调中添加了.
另外,我认为你可以进一步简化这一点
var tempgroups = splitgroups(groups, handlegroupinterval);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27 次 |
| 最近记录: |