使用Java Script删除JSON消息中的动态嵌套元素

deleting a Dynamic nested element in JSON message using Java Script

本文关键字:动态 嵌套 元素 消息 Java Script 删除 JSON 使用      更新时间:2023-09-26

我们正在寻找一个使用Java Script删除JSON消息中嵌套元素的示例代码。此元素名称将从其他函数动态获取。

删除路径:

privateNetwork.floor.block.network.name

我们确信以下代码可以在硬编码中工作:

delete jsonobj[privateNetwork][floor][block][network][name]

但是如何在动态场景中实现这一点呢?
例如:在第二次尝试中,如果我们需要删除privateNetwork.floor.room .

将属性名拆分为一个数组,循环遍历直到找到它的直接父元素(最后一项旁边),并使用该元素删除最内层字段(数组的最后一项)

var deepObject = {
  privateNetwork: {
    floor: {
      room: 'Room 1408'
    }
  }
}
// Find object property recursively by string path
var deepFind = function (obj, path) {
  var current=obj; 
  path.split('.').forEach(function(p){ current = current[p]; }); 
  return current;
}
var dynamicPropertyName = 'privateNetwork.floor.room';
var innermostObjectName = dynamicPropertyName.substring(0, dynamicPropertyName.lastIndexOf('.'));
var fieldName = dynamicPropertyName.substring(dynamicPropertyName.lastIndexOf('.') + 1);
var innermostObject = deepFind(deepObject, innermostObjectName);
delete innermostObject[fieldName];
console.log(deepObject);
https://jsfiddle.net/7r6avpsy/