JavaScript 如何查找对象中某个 value 并返回路径上所有的 key值?
对象中循环嵌套取连续的key值,输出连续key值拼接的字符串,类似取url地址
var targetObj = { a: { b: { c: { d: { e: { name: "aaaaa" } } } }, d: '90', e: '90' }, a2: { name: 'bbbbb' }, a3: { k: { l: { name: 'ccccc' } } }, a4: { k: { l: { name: "北京", author: 'jin', version: '1.0.1' } } } } // console.log(targetObj.a4.k.l); // {name: "北京", author: "jin", version: "1.0.1"} // author: "jin" // name: "北京" // version: "1.0.1" // console.log(targetObj.a4.k.l.name); // 北京 // flat() 方法,这个方法可以抹平一个数组。不管嵌套了多少的数组,都会展开成为一个无嵌套数组 function search(object, value) { for (var key in object) { if (object[key] == value) return [key]; if (typeof (object[key]) == "object") { var temp = search(object[key], value); if (temp) return [key, temp].flat(); } } } var url = search(targetObj, "北京").join("/"); console.log(url); // a4/k/l/name