可能比较绕,具体是这样的,从接口收到了一个数据,结构大概是这样:
[
{
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:" 和 ","之间的字符串