1、題目要求:如下數組輸入相應的id號,就可以返回數據對象
var data = [{ id: 1, name: '家電', goods: [{ id: 11, gname: '冰箱' }, { id: 12, gname: '服飾' }] }, { id: 2, name: '服飾' }];
代碼實現
function getID(json, id) { var o = {}; //專門用來保存篩選后的數組
//定義一個函數getID(json,id),形參json用來接受傳入的數組,形參id用來接受id號
//核心:利用arry.forEach(function(currentValue),index,arr)遍歷數組 json.forEach(function(item) {
//if用來判斷外層,else if用來判斷里層,調用遞歸函數的有2個判斷條件在“有goods屬性並且不為空”情況下才調用 if (item.id = id) { o = item; } else if (item.goods && item.goods.length > 0) { o = getID(item.goods, id)//遞歸 } }); return o; //全部遍歷完之后返回對象o } console.log(getID(data, 1)); console.log(getID(data, 2)); console.log(getID(data, 11)); console.log(getID(data, 12)); </script>
結果:
注意:上述如果不使用遞歸,只能遍歷到數組的最外層如下:
data.forEach(function(item) { console.log(item); })
結果: