这是示例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以上动态生成数组序列。
答案 0 :(得分:4)
假设你从这开始:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="di1">Div 1</div>
<div id="di2">Div 2</div>
<div id="di3">Div 3</div>
<div id="di4">Div 4</div>
<hr>
<hr>
<div id="li1">Links 1</div>
<div id="li2">Links 2</div>
<div id="li3">Links 3</div>
<div id="li4">Links 4</div>
然后逻辑很简单:找到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);
答案 1 :(得分:-1)
我找到了另一个解决方案,很容易。
var jsonKey = 'search.facets.source';
eval('delete jsonObj.' + jsonKey + ';');