2017-04-24 4 views
0

私には明らかな点がありませんが、私が知っているすべての方法を試しましたが、トピックに関する既存の質問もすべて調べました(ほとんどは非同期呼び出しを扱っています)。ログに記録された値は正しいのですが、返すと「未定義」ですか?

次のコードでは、省略語に一致する国を検索しようとしています。結果を記録すると正しい結果が得られますが、返すとundefinedとなります。

countries[i].value; 
obj.value; 
obj['value']; 
+5

あなたの関数は何も返していない、リターンは何に割り当てられていない '$の.each'、内側にあります。 –

答えて

3

をあなたが唯一の目標要素を返すためにeachメソッドの代わりにfindを使用することができます。私は試してみました

var countries = [ 
 
    {value: 'Belgium', data: 'BE'}, 
 
    {value: 'France', data: 'FR'}, 
 
    {value: 'Bulgaria', data: 'BG'}, 
 
    {value: 'Denmark', data: 'DK'}, 
 
    {value: 'Croatia', data: 'HR'}, 
 
    {value: 'Germany', data: 'DE'}, 
 
]; 
 
     
 
function findCountry(code) { 
 
    $.each(countries, function (i, obj) { 
 
    if (obj.data === code) { 
 
     console.log(countries[i]['value']); 
 
     return countries[i]['value']; 
 
    } 
 
    }); 
 
} 
 

 
var k = findCountry('DE'); 
 
alert(k);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

他のもの。

documentation

var countries = [ 
 
    {value: 'Belgium', data: 'BE'}, 
 
    {value: 'France', data: 'FR'}, 
 
    {value: 'Bulgaria', data: 'BG'}, 
 
    {value: 'Denmark', data: 'DK'}, 
 
    {value: 'Croatia', data: 'HR'}, 
 
    {value: 'Germany', data: 'DE'}, 
 
]; 
 
     
 
function findCountry(code) { 
 
return countries.find(function(c){ 
 
    return c.data==code; 
 
}); 
 
} 
 

 
var countryObject = findCountry('DE'); 
 
console.log(countryObject); 
 
//Get only the value 
 
console.log(countryObject.value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

関連する問題