这是示例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的方法:


delete search.facets.source
delete jsobObj['search']['facets']['source']
var jsonKey = 'source'; JSON.parse(angular.toJson(jsonObj), function (key, value) { if (key != jsonKey) return value; });


高于1和2并不是动态的,而3是其中一种方法,但不是适当的方法。因为如果源存在于另一个节点中,则它将不起作用。请任何人都可以告诉我如何使用任何一种嵌套键动态删除它。因为我们无法在上述2中动态生成数组序列。

最佳答案

假设您是从这里开始:

let path = 'search.facets.source';


那么逻辑很简单:找到search.facets对象,然后在其上找到delete obj['source']

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

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/

10-10 22:50