* 写一个 find 方法,根据 id 查找 data 树中的任意一项,例如:
* find(data, 'Z101') // => '浦东'
* find(data, '201C') // => '西湖区'
var data = [
{
id: "100X",
name: "上海",
children: [
{
id: "Z101",
name: "浦东",
children: [],
},
{
id: "102Y",
name: "浦西",
children: [],
},
],
},
{
id: "D200",
name: "杭州",
children: [
{
id: "201C",
name: "西湖区",
children: [
{
id: "A221",
name: "黄龙时代",
children: [],
},
],
},
{
id: "V202",
name: "余杭区",
children: [],
},
],
},
];
答案:
var data = [
{
id: "100X",
name: "上海",
children: [
{
id: "Z101",
name: "浦东",
children: [],
},
{
id: "102Y",
name: "浦西",
children: [],
},
],
},
{
id: "D200",
name: "杭州",
children: [
{
id: "201C",
name: "西湖区",
children: [
{
id: "A221",
name: "黄龙时代",
children: [],
},
],
},
{
id: "V202",
name: "余杭区",
children: [],
},
],
},
];
find(data, "Z101")
function find(data, id) {
// console.log(data,id);
for (key in data) {
// key 下标 0 1 data[key] 每一项
// console.log(data[key].id);
// console.log(data[key].children.length,'33333');
if (data[key] && data[key].id == id) {
return data[key].name;
}
}
//children存在 有属性值
for (key in data) {
if (data[key].children && data[key].children.length > 0) {
//把children 直接传进去
let res = find(data[key].children, id);
if (res) {
return res;
}
}
}
}
console.log(find(data,'201C'));