|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
<script>
var data = [{
id: 1,
name: '家电',
goods: [{
id: 11,
gname: '冰箱',
goods: [{
id: 111,
gname: '海尔'
}, {
id: 112,
gname: '美的'
}, ]
}, {
id: 12,
gname: '洗衣机'
}]
}, {
id: 2,
name: '服饰'
}];
//11111111111111111111111111111111111
function getID(json, id) {
var o = {};
json.forEach(function(item) {
if (item.id == id) {
o = item;
return o;
} else if (item.goods && item.goods.length > 0) {
//困惑点--------------------------------------------------------------------------------------------
getID(item.goods, id);
}
});
return o;
};
//222222222222222222222222222222222222
function getID(json, id) {
var o = {};
json.forEach(function(item) {
if (item.id == id) {
o = item;
return o;
} else if (item.goods && item.goods.length > 0) {
//困惑点--------------------------------------------------------------------------------------------
o = getID(item.goods, id);
}
});
return o;
};
console.log(getID(data, 1));
console.log(getID(data, 2));
console.log(getID(data, 11));
console.log(getID(data, 12));
</script>
大佬帮我看一下 1和2里面的困惑点 为什么一定要用递归函数来更新一下o对象才能获取到最里面的值 我用断点发现o = item;这句已经把里面的值给了对象o了 但是打印不出来
由return o来一层层的接住 全部退出最外面的return才返回
|
|