我想寫一個遞歸函數,它基於索引數組返回我的模型中正確的嵌套對象。js遞歸函數不返回正確的子對象
我的控制檯日誌標記爲'內部函數'實際上顯示正確的obj!這讓我感到莫名其妙,因爲我之後所做的只是返回obj,但函數似乎再次運行並返回父項。
var model = [
{ name: 'Item 1' },
{
name: 'Item 2',
sub: [
{ name: 'Item 2.1' },
{ name: 'Item 2.2' },
{ name: 'Item 2.3' }
]
},
{ name: 'Item 3' },
{ name: 'Item 4' }
];
function getObj(collection, array) {
var data = collection[array[0]];
if(array.length > 1) {
array.shift();
arguments.callee(data.sub, array);
}
console.log('inside function', data);
return data;
}
var obj = getObj(model, [1, 2]); // expecting obj.name === 'Item 2.3'
console.log('result', obj); // obj.name === 'Item 2'
[注意](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/參數/被調用者)_「ECMAScript(ES5)的第5版禁止在嚴格模式下使用arguments.callee()。」_ - 爲什麼不直接使用'getObj(...)'來獲得更好的支持? –
謝謝,不知道..會更新。 – daviestar