JavaScript:打印嵌套对象的完整路径

标签 javascript json nested

JavaScript 中是否有打印嵌套对象属性的完整路径的方法。例如假设我有一个下面的对象

var items = [ {
  2019 : {
   December: {
      Groceries : {
        KitchenNeeds : {
         [
          "Milk",
          "cheese"
          ]
        }
      }
    }
  }
}];

要访问 Milk,我可以访问 items[0].2019.December.Groceries.KitchenNeeds[0] 但是有什么办法吗,如果我选择“Milk”,它应该打印所有获得“牛奶”需要经过的树路。

最佳答案

您可以检查获取 pathe 的嵌套是否返回真值并返回一个包含实际键和嵌套值路径的数组。

function getPath(object, target) {
    var path;
    if (object && typeof object === 'object') {
        Object.entries(object).some(([k, v]) => {
            if (v === target) return path = [k];
            var temp = getPath(v, target);
            if (temp) return path = [k, ...temp];
        });        
    }
    return path;
}

var items = [{ 2019: { December: { Groceries: { KitchenNeeds: ["Milk", "cheese"] } } } }];

console.log(getPath(items, 'Milk'));

关于JavaScript:打印嵌套对象的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354192/

相关文章:

javascript - 将元素乘以数字并使用 jQuery 插入

javascript - 无法读取未定义的属性 - D3 hive 图

javascript - d3 Choropleth 的 JSON 格式

c++ - 多个嵌套 for 循环与单个 for 循环

r - 嵌套 ifelse : improved syntax

Javascript 随机数选择器不工作

javascript - 将 Iframe 用于服务器上的另一个文件是否会使当前页面加载速度比直接在页面上加载更快?

javascript - 为什么导航栏会向下滑动变窄然后变宽?

javascript - 为什么json号变了,什么时候json.parse一个字符串?

c++ - 带有 std::map::const_iterator 的模板化类中的嵌套结构?