这是示例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/