对象中循环嵌套取连续的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
JavaScript 如何查找对象中某个 value 并返回路径上所有的 key值?
点赞
收藏