簡體   English   中英

Javascript中的數組搜索不起作用

[英]Array search in Javascript not working

我有以下數據結構:

var map_neighbours = [{
    "Alaska": ["UstKamchatsk", "Yukon"]
}, {
    "Algeria": ["Chad", "Egypt", "SierraLeone", "Spain"]
}, {
    "AntarticWildlifeTerritory": ["AustralianAntarticTerritory", "SouthAfricanAntarticTerritory"]
}, .....]

用戶通過頁面選擇一個區域,我想遍歷此結構,找到該區域,然后遍歷子區域(在相應位置)。

因此,例如,對於Algeria我希望一個循環地逐一獲得"Chad", "Egypt", "SierraLeone", "Spain"

我嘗試了一些這種方法,但沒有成功(如上所述, region由用戶提供):

var neighbourArray = map_neighbours[region];

$.each(neighbourArray, function(idx, val) {

    console.log("Neighbours= " + neighbourArray[region][idx]);

});

要么

$.each(map_neighbours, function(outer, val) {

    if (map_neighbours[outer] == region) {

        neighbourArray = (map_neighbours[outer][]);

        $.each(neighbourArray, function(inner, val) {

            console.log("Neighbours= " + neighbourArray[outer][inner]);

        });

     );

};

感謝您的任何建議。

使用當前結構,您需要遍歷數組,並查看該項目是否具有輸入值作為鍵,例如

 var map_neighbours = [{ "Alaska": ["UstKamchatsk", "Yukon"] }, { "Algeria": ["Chad", "Egypt", "SierraLeone", "Spain"] }, { "AntarticWildlifeTerritory": ["AustralianAntarticTerritory", "SouthAfricanAntarticTerritory"] }]; var input = 'Algeria', result; $.each(map_neighbours, function(i, item) { if (item[input]) { result = item[input]; return false; } }) if (result) { snippet.log(JSON.stringify(result)); } else { snippet.log('not found') } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 


但是,要處理這種情況,更好的結構是使用鍵值對象而不是對象數組

 var map_neighbours = { "Alaska": ["UstKamchatsk", "Yukon"], "Algeria": ["Chad", "Egypt", "SierraLeone", "Spain"], "AntarticWildlifeTerritory": ["AustralianAntarticTerritory", "SouthAfricanAntarticTerritory"] }; var input = 'Algeria', result = map_neighbours[input]; if (result) { snippet.log(JSON.stringify(result)); } else { snippet.log('not found') } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM