繁体   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