2012-02-21 7 views
0

를 반환 내가 콘솔에 출력을 쓸 수있는 자바 스크립트 기능을 가지고 있지에 쓸 수 있지만 값을 반환 할 수없는자바 스크립트 기능이 콘솔하지만 값

fetchData: function(dateToFetch){ 
      if (mP.viewMode == 1){ 
       $.each(mealData.DailymPs, function(k, item){ 
        if(item.Date == formatDate(mP.chosenDate)){ 
         mP.DayPlan.mPDayData = item; 
         return mP.populateMealDayPlan(); 
        }  
       }) 
      } else if (mP.viewMode == 2){ 
      // debugger; 
       $.each(mealData.DailymPs, function(k, item){ 
        if(item.Date == (dateToFetch)){ 
         mP.DayPlan.mPDayData = item; 
         console.log(mP.populateMealDayPlan()); 
         var returnObj = mP.populateMealDayPlan(); 
         return returnObj; 
        }  
       }) 
      } 

     } 
당신은 해결할 수있을 것입니다

답변

2

... 
$.each(mealData.DailymPs, function(k, item){ 
    if(item.Date == (dateToFetch)){ 
     mP.DayPlan.mPDayData = item; 
     console.log(mP.populateMealDayPlan()); 
     var returnObj = mP.populateMealDayPlan(); 
     return returnObj; 
    }  
}) 
... 

... 
var returnObj = null; 
$.each(mealData.DailymPs, function(k, item){ 
    if(item.Date == (dateToFetch)){ 
     mP.DayPlan.mPDayData = item; 
     console.log(mP.populateMealDayPlan()); 
     returnObj = mP.populateMealDayPlan(); 
     return false; // break out of each() 
    }  
}) 
if(returnObj != null) return returnObj; 
... 

하지

에 : 그것은에 의해에서 변경 e : if 조건의 반환 변수를 외부화해야 할 수도 있습니다. 나는 그것이 else 조건에 대해 어떻게 수행 될 수 있는지를 보여주었습니다.

0

$.each 루프에서 무엇인가를 반환하려면 바깥 범위의 변수 return false;에 변수를 할당하고 루프를 중단 한 다음 $.each(); 호출 후에 반환하십시오.

0

mP.populateMealDayPlan을 보지 않고 처음으로 함수를 두 번 호출하면 값이 변경되어 mP의 일부 내부 값이 변경됩니다. 즉, 내가 옳고 console.log를 주석 처리하면 반환 값이 있어야합니다. 당신은 또한 할 수 :

var returnObj = mP.populateMealDayPlan();  
console.log(returnObj); 

대신을 CONSOLE.LOG

에 mP.populateMealDayPlan를 호출하는 대신이 다음 나는 우리가 돕기 위해 더 많은 컨텍스트를 필요 생각하는 경우가 아니라면.

0

귀하의 반환 명세서는 함수가 아니라 each 메서드로 전달 된 함수에서 반환됩니다. grep function은 여기에서 유용합니다.

fetchData: function(dateToFetch) { 
    var selector = mP.viewMode == 1 ? function(item) { return item.Date == formatDate(mP.chosenDate) } : function (item) { return item.Date == dateToFetch}; 

    var matched = $.grep(mealData.DailymPs, selector); 
    if (matched.length) { 
    var item = matched[0]; 
    mP.DayPlan.mPDayData = item; 
    console.log(mP.populateMealDayPlan()); 
    return mP.populateMealDayPlan(); 
    } 
} 
관련 문제