有点描述不好,大概意思是比如我有这么一个对象:
{
a : {
aa : {
aaa : 123,
bbb : 124
}
},
b : 1,
c : [1,2,3]
d : 2
}
我现在知道了一个属性名“aaa”,我希望通过一个方法得到根属性名“a”。
有点描述不好,大概意思是比如我有这么一个对象:
{
a : {
aa : {
aaa : 123,
bbb : 124
}
},
b : 1,
c : [1,2,3]
d : 2
}
我现在知道了一个属性名“aaa”,我希望通过一个方法得到根属性名“a”。
随便写的可以测一下(有点乱看看就行,属性名一样会返回第一个找到的)
var json = {
a:{
aa:{
aaa:123,
bbb:124
}
},
b:[{k:"f"}],
c:[{a:[{abc:{def:8}}],b:1}],
d:2
};
function dg(json,a){
var cb = null;
if({}.toString.call(json)=="[object Object]"){
for(var i in json){
if(i==a){
return i
}
if({}.toString.call(json[i])=="[object Object]"||{}.toString.call(json[i])=="[object Array]"){
if(dg(json[i],a)){
return i;
}
}
}
}else if({}.toString.call(json)=="[object Array]"){
for(var i=0;i<json.length;i++){
if({}.toString.call(json[i])=="[object Object]"){
cb = dg(json[i],a)
}
}
}
return cb
}
console.log(dg(json,"abc"))
其实这个问题,有种投机取巧的办法:
var json = {
a:{
aa:{
aaa:123,
bbb:124
}
},
b:[{k:"f"}],
c:[{a:[{abc:{def:8}}],b:1}],
d:2
}
//这段直接复制上面兄弟的
有一个小东西:JSON.stringify
结果:
"{"a":{"aa":{"aaa":123,"bbb":124}},"b":[{"k":"f"}],"c":[{"a":[{"abc":{"def":8}}],"b":1}],"d":2}"
然后,按{
一层层往上找就好了,找到,
或者开头为止
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
类似深度优先搜索,遍历对象的所有属性,不断递归,直到找到那个属性就可以