获取javascript中json结构中的搜索方式
我有一个json结构,它来自表的关系数据库:countries->states->cities,json对象的格式如下:获取javascript中json结构中的搜索方式,javascript,json,Javascript,Json,我有一个json结构,它来自表的关系数据库:countries->states->cities,json对象的格式如下: var object = { 'countries': [ { 'id_country': 1, 'name': 'Country 1', 'states': [ { 'id_state': 1,
var object = {
'countries': [
{
'id_country': 1,
'name': 'Country 1',
'states': [
{
'id_state': 1,
'name': 'State 1',
'cities': [
{
'id_city': 1,
'name': 'City 1'
},
{
'id_city': 2,
'name': 'City 2'
}
]
},
{
'id_state': 2,
'name': 'State 2',
'cities': [
{
'id_city': 3,
'name': 'City 3'
}
]
}
]
}
]
};
使用参数与此类似的函数:
var arrays = ['countries', 'states', 'cities'];
var keySearch = 'id_city';
var valueSearch = 3;
function getPath(object, arrays, keySearch, valueSearch);
我想返回如下数组:
var result = [0, 1, 0];
结果的第一个元素对应于国家的位置,第二个元素对应于州的位置,第三个元素对应于城市的位置。
如何在javascript中实现这一点?我曾经尝试过使用递归方法来完成类似的例子,但是我一直没能让它工作。提前感谢。您可以采用递归方法,将路径存储为每个嵌套调用的对象引用
函数getPath(对象,[array,…arrays],键,值,路径=[]){
对象[数组].some((o,i)=>{
如果(
o[键]==值||
arrays.length&&path.length
。作为控制台包装{最大高度:100%!重要;顶部:0;}
非常基本,仅供参考
// get the first country of the object.
console.log(object.countries[0]);
// get the second state of the first country of the object.
console.log(object.countries[0].states[1]);
// get the first city of the first state of the first country of the object.
console.log(object.countries[0].states[0].cities[0]);
“我没能让它工作”。。。请包括您尝试过的任何内容。它非常有效,谢谢!不幸的是,我不能对你的答案投赞成票。你知道结果。但是如何得到它呢?是的,这是一条很短的路,但是我想让这个函数与具有不同结构的JSON一起工作,就像Nina Scholz的答案代码一样。无论如何谢谢你@NinaScholz我不想在不知道OP是否知道任何事情的情况下交出(或研究)一个完整的答案。