2011年8月11日 星期四

[Javascript] 匿名函數 遞迴寫法


最近剛接觸jQuery,它很多寫法都還滿特別的,

就連遞迴也很不一般 XD




var ht = new hashTable();

ht.add('0', { code : 'AP01', parent : 'ROOT' });
ht.add('1', { code : 'AP011', parent : 'AP01' });
ht.add('2', { code : 'AP0111', parent : 'AP011' });
ht.add('3', { code : 'AP02', parent : 'ROOT' });
ht.add('4', { code : 'AP021', parent : 'AP02' });
ht.add('5', { code : 'AP022', parent : 'AP02' });

/*
bindDataByTeam = function(_Ht, _CP) {
var result = '';
query = function(_Ht, _CP) { var ht = new hashTable(); for (var key in _Ht.hash) { if (_Ht.items(key).parent == _CP) ht.add(key, _Ht.items(key)); }; return ht; };
var ht = query(_Ht, _CP);
for (var key in ht.hash) {
result += ht.items(key).code; result += bindDataByTeam(_Ht, ht.items(key).code);
}; return result;
};
*/
bindDataByTeam = function(_Ht, _CPNV, _CN, _CPN) {
var ht_Result = new hashTable();
query = function(_Ht, _CPNV) { var ht = new hashTable(); for (var key in _Ht.hash) { if (_Ht.items(key)[_CPN] == _CPNV) ht.add(key, _Ht.items(key)); }; return ht; };
var ht = query(_Ht, _CPNV);
for (var key in ht.hash) { ht_Result.add(key, ht.items(key)); var t = bindDataByTeam(_Ht, ht.items(key)[_CN], _CN, _CPN); for (var k in t.hash) ht_Result.add(k, t.items(k)); }; return ht_Result;
};
var h = bindDataByTeam(ht, 'AP01', 'code', 'parent');
var result = '';
for (var key in h.hash) result += h.items(key).code;
alert(result);

沒有留言:

張貼留言