我試圖循環嵌入式數組,直到找到一個項的data
屬性對應於我的輸入。在jQuery上使用嵌入式數組的find()。每個
下面的示例應該提示荷蘭。相反,當你在第一個數組中使用一個項目時,你會得到undefined
,如果你從第二個數組中選擇一個,你會得到一個對象。
var countries = {
"EU": [
{value: 'Malta', data: 'MT'},
{value: 'Netherlands', data: 'NL'},
{value: 'Austria', data: 'AT'},
{value: 'Italy', data: 'IT'}
],
"other": [
{value: 'Bosnia and Herz.', data: 'BA'},
{value: 'Jersey', data: 'JE'},
{value: 'Belarus', data: 'BY'}
]
};
function findCountry(code) {
$.each(countries, function(key, arr) {
val = arr.find(function(obj) {
return obj.data == code;
});
});
return val;
}
alert(findCountry('NL'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
所以,我認爲,即使該項目第一陣列中找到,each
保持運行。可能需要返回語句。但即便如此,
var countries = {
"EU": [
{value: 'Malta', data: 'MT'},
{value: 'Netherlands', data: 'NL'},
{value: 'Austria', data: 'AT'},
{value: 'Italy', data: 'IT'}
],
"other": [
{value: 'Bosnia and Herz.', data: 'BA'},
{value: 'Jersey', data: 'JE'},
{value: 'Belarus', data: 'BY'}
]
};
function findCountry(code) {
$.each(countries, function(key, arr) {
return arr.find(function(obj) {
return obj.data == code;
});
});
}
alert(findCountry('BA'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
但這返回undefined
所有的時間。那麼我錯過了什麼?
的問題是,'findCountry()'沒有回報,因此它被'undefined' – doublesharp
如果您正在查找的國家(而不是「區」),你應該構建您的對象的國家名稱作爲關鍵字,而區域作爲子對象的某些屬性。然後,只需檢查'if(countries ['Malta'])'而不是搜索整個對象的屬性。 – James
@詹姆斯我希望我可以改變結構,不幸的是我正在使用一個需要這個特定結構的插件。 –