2015-10-08 138 views
0

我有以下数据结构:阵列搜索不工作

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]); 

     }); 

    ); 

}; 

感谢您的任何建议。

+0

是''=>'应该在那里,还是应该是':'? –

回答

2

根据您目前的结构,你需要遍历数组了,看该项目是否具有输入值像

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>

+0

真棒,你的第二个演示是非常好的建议,谢谢! – TheRealPapa