2014-04-13 3 views
0

내가 왜이 코드는 (jsFiddle here를) 예상대로 작동하지 않습니다에 관한 빈을 당겨 해요 :Javascript 및/또는 jQuery가이 방법으로 객체를 반환 할 수 있습니까?

data = [ 
{ 
    "id": 1, 
    "value": 4.56 
}, 
{ 
    "id": 2, 
    "value": 7.89 
}]; 


function FindMe(searchID) 
{ 
    $.each(data, function (i, v) 
    { 
     // i=index, v=value (which is an object) 
     if (v.id === searchID) 
     { 
      console.log("Found: "); 
      console.log(v); 
      return v; // pass the desired object back to caller 
     } 
    }); 
} 

console.clear(); 
var test = FindMe(2); // causes the console to show the correct object 
console.log("Returned: "); 
console.log(test); // shows "undefined" instead of a returned object 

기능은 명확하게 작업이 올바른 배열 요소를 찾아 않습니다 (콘솔이 발견 "으로 표시 "), 그러나 반환은 일어나지 않고있다. 여기서 뭐가 잘못 됐어?

답변

4

루핑 함수가 FindMe 함수가 아닌 찾은 항목을 반환하기 때문입니다.

나를 찾는다. 아무 것도 반환하지 않습니다.

function FindMe(searchID) { 
var result;  
    $.each(data, function (i, v) { // i=index, v=value (which is an object) 
     if (v.id === searchID) { 
      console.log("Found: "); 
      console.log(v); 
      result = v; // pass the desired object back to caller 
      return false; 
     } 
    }); 
    return result; 
} 
+0

- 감사합니다. 하지만 downvote 가치가 없어 ... –

+0

@ GeekStocks 내가 downvote하지 않았어, BTW –

2

FindMe 함수에 return 문이 없습니다. $.each ...

0

당신이 사용할 수 있습니다 : 당신이 필요로하는 것은 기본 Array.prototype.filterthis one here 같은 비슷한입니다 지금 그것을 볼

data = [{ 
"id": 1, 
    "value": 4.56 
}, { 
    "id": 2, 
     "value": 7.89 
}]; 


function FindMe(searchID) { 
    var searchObj=null; 
    $.each(data, function (i, v) { // i=index, v=value (which is an object) 
     if (v.id === searchID) { 
      console.log("Found: "); 
      console.log(v); 
      searchObj = v; // pass the desired object back to caller 
      return false; 
     } 
    }); 
    return searchObj; 
} 

console.clear(); 
var test = FindMe(2); 
object 
console.log("Returned: "); 
console.log(test); 
object 
관련 문제