javascript - 如何动态删除嵌套的json键?

标签 javascript angularjs json

这是示例 json:

{
"search": {
"facets": {
  "author": [

  ],
  "language": [
    {
      "value": "nep",
      "count": 3
    },
    {
      "value": "urd",
      "count": 1
    }
  ],
  "source": [
    {
      "value": "West Bengal State Council of Vocational Education & Training",
      "count": 175
    }
  ],
  "type": [
    {
      "value": "text",
      "count": 175
    }
  ],
  }
 }

有多种方法可以删除关键字search.facets.source:

  1. 删除 search.facets.source
  2. 删除 jsobObj['search']['facets']['source']
  3. var jsonKey = '源'; JSON.parse(angular.toJson(jsonObj), 函数 (键, 值) { if (key != jsonKey) 返回值; });

以上1和2不是动态的,3是其中一种方式但不是正确的方式。因为如果源存在于另一个节点中,那么它将无法工作。请任何人都可以告诉我如何在任何类型的嵌套键中动态删除它。因为上面2中我们无法动态生成数组序列。

最佳答案

假设您从这里开始:

let path = 'search.facets.source';

那么逻辑很简单:找到search.facets对象,然后删除它上面的obj['source']

第一步,将路径分为初始路径和尾部属性名称:

let keys = path.split('.');
let prop = keys.pop();

在对象中查找facets对象:

let parent = keys.reduce((obj, key) => obj[key], jsonObj);

删除属性:

delete parent[prop];

关于javascript - 如何动态删除嵌套的json键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38890239/

相关文章:

javascript - 预编译 mustache 模板还是从外部加载?

javascript - JavaScript 中的 Python any() 和 all() 函数等价于什么?

javascript - 循环内的连续 http 请求

python - 在Python中读取大型JSON文件

json - 如何将 JSON 文件作为 MessageBody for Amazon SQS 发布?

javascript - $_GET 无法在我的 php 上运行

javascript - iOS uiwebview 在加载整个 html 文件之前触发 finishLoad 事件

Javascript Nodejs 值未插入数组

javascript - 在 angularjs 中手动触发 $watch 事件

java - Json Gson 期望 Begin Object,但实际上是字符串