javascript - 需要在 Javascript 或 Angular 搜索时显示 JSON 中的父级和子级

标签 javascript angular typescript

我需要显示嵌套 JSON 数据的父级和子级。请查找以下示例 JSON 数据

[
        {
            "name": "India",
            "children": [
                {
                    "name": "Delhi",
                    "children": [
                        {
                            "name": "South Delhi"
                        },
                        {
                            "name": "North Delhi"
                        }
                    ]
                },
                {
                    "name": "Tamil Nadu",
                    "children": [
                        {
                            "name": "Chennai"
                        },
                        {
                            "name": "Coimbatore"
                        }
                    ]
                }
            ]
        },
        {
            "name": "America",
            "chilren": [
                {
                    "name": "California",
                    "children": [
                        {
                            "name": "Trinity"
                        },
                        {
                            "name": "Yolo"
                        }
                    ]
                },
                {
                    "name": "Florida",
                    "children": [
                        {
                            "name": "Bradford"
                        },
                        {
                            "name": "Calhoun"
                        }
                    ]
                }
            ]
        }
    ]

在上面的json数据中。如果我搜索名称“Yolo”,我需要得到 America -> California -> Yolo 结果。你能帮忙吗?

请找到我编写的以下代码,这仅显示子项,但我也需要父项

searchRecursive(value) {
        for (var i = 0; i < value.length; i++) {
            let lowerCaseName = value[i]['name'].toLowerCase();
            if (lowerCaseName.includes('yolo')) {
                this.searchedItems.push(value[i]);
            } else if (value[i]['children']) {
                if (value[i]['children'].length > 0) {
                    this.searchRecursive(value[i]['children']);
                }
            }
        }

        return this.searchedItems;
    }

最佳答案

根据您提供的数组,您可以执行以下操作:

let searchTerm = 'Yolo';

let reduced = countries.reduce((acc, val) => {
  let city = val.children[0].children.filter(city => (city.name == searchTerm)).pop();
  let country = val.name;
  let state = val.children[0].name;

  if (city) {
    return {
      country,
      state,
      city: city.name
    }
  }
});

变量reduce将保存该值:

{ country: 'America', state: 'California', city: 'Yolo' }

关于javascript - 需要在 Javascript 或 Angular 搜索时显示 JSON 中的父级和子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59511904/

相关文章:

javascript - 如何在 JavaScript 中的数组开头添加新的数组元素?

angular - Angular 项目的 bundle 大小?

javascript - Angular 的链接函数与 Angular 2 的构造函数

Window.Location.Href 的 Angular 单元测试覆盖率

javascript - 在另一个 JavaScript 应用程序中运行 Node 应用程序

javascript - 如何从 GMaps 信息窗口触发 jQuery

带路由器导出的 Angular 全屏 404 页面

javascript - Jasmine/Jest 类型冲突

reactjs - 没有 Prop 时传递给 super 什么?

javascript - 如何获取 'getJSON' 响应头