获取javascript中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,

我有一个json结构,它来自表的关系数据库:countries->states->cities,json对象的格式如下:

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是否知道任何事情的情况下交出(或研究)一个完整的答案。