2017-04-06 91 views
0

我新的節點和回調。我試圖將一個組列表分成一個數組。這些團體用逗號或「 - 」分隔。這最後一個意味着它是這樣,如果有22-25這意味着間隔:22,23,24,25,我試圖下面的代碼。回調函數返回值,但apears是未定義

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); 

當我在「return temparr」上設置斷點時,我得到正確的值。但是在第一個函數中,結果是未定義的。有人知道這個問題?

+0

OMG你說得對。謝謝,只是一個回報固定它!非常感謝。 –

回答

5

您從回調不return

只需使用

var tempgroups = splitgroups(groups, function(res){ return handlegroupinterval(res); }); 

通知回調添加return更換

var tempgroups = splitgroups(groups, function(res){handlegroupinterval(res)}); 

另外,我覺得你可以進一步簡化這個作爲

var tempgroups = splitgroups(groups, handlegroupinterval); 
相關問題