可能比較繞,具體是這樣的,從介面收到了一個數據,結構大概是這樣:
[
{
id: '1',
name: '',
child: [
{id: '5',
name: 'aaa',
child: [
{
id: '1',
name: 'aaa',
child: [
{
id: '1',
name: 'aaa',
child: [
]
}
]
}
]
}
]
},
{
id: '2',
name: '',
child: [
]
}
]
每一層的每一條數據都有獨立id,然後有child欄位對應第二層數據,第二層數據也有child欄位對應第三層數據等等…
請問有沒有高效率一點的方法,透過一個指定id,從這個樹狀資料中取得相對應的name?求個封裝函數
曾经蜡笔没有小新2017-05-19 10:13:14
根據你要求和提供的資料樣本,寫了個demo,不知道符不符合你的要求。 透過一個指定id,傳回目前物件
var data = 你的数据样本;
var Result;
function demo( data, id ) {
for (var i = 0; i < data.length; i++) {
if ( data[ i ].id == id ) {
Result = data[ i ];
break;
}else if ( data[ i ].child.length && !Result ) {
demo( data[ i ].child, id );
};
};
return Result;
}
console.log(demo( data, 3 ));
運行結果
註:demo( data, id )
中的 id
必須是唯一的
过去多啦不再A梦2017-05-19 10:13:14
正道: 遞迴;
歪道: 物件 JSON.Stringify 以後,用正規匹配 "id":"xx" 後,取得第一個 "name:" 和 ","之間的字串