//通过id获取根父级的名字
function idgetparentname(json, id) {
//for遍历对象数组
for (var i in json) {
//如果对象的id等于当前输入id
if (json[i].id == id) {
//获取对象的父级id
var ces = json[i].parentid;
//若父级id为零 则为根父级
if (ces == 0) {
//返回根父级name
return json[i].name;
} else {
//递归调用由return返回新的值
return idgetparentname(json, json[i].parentid);
}
}
//console.log('for',i);
}
}
其中for( x in data)的用法是将数组data中的数据一个一个的付给x,此时x是新的变量
递归调用后由return返回新的值,若无return 无法返回值, json[i].name结果为undefined
全部代码:
window.onload = function () {
var user = [{
id: 1,
name: '怎的好',
age: 20,
parentid: 0
},
{
id: 2,
name: '张盼',
age: 18,
parentid: 1
},
{
id: 3,
name: '陆夫人',
age: 19,
parentid: 2
},
{
id: 4,
name: '孤影1',
age: 17,
parentid: 0
},
{
id: 5,
name: '孤影2',
age: 17,
parentid: 3
},
{
id: 6,
name: '孤影3',
age: 17,
parentid: 4
},
];
var values = this.idgetname(user, 5);
var name = namegetid(user, "张盼");
//var parentname = idgetparentname(user, 6);
console.log( idgetparentname(user, 6) );
console.log(values);
console.log(name);
//console.log(parentname);
}
//1、通过id获取名字
function idgetname(json, id) {
// for(var i=0;i<a.length;i++){
// if(a[i].id==b){
// console.log(a[i].name);
// }
// json.id=id
for (var i in json) {
if (json[i].id == id) {
return json[i].name;
}
}
}
//2、通过名字获取id
function namegetid(json, id) {
for (var i in json) {
if (json[i].name == id) {
return json[i].id;
}
}
}
//3、通过id获取根父级的名字
function idgetparentname(json, id) {
// console.log('id',id);
for (var i in json) {
//
if (json[i].id == id) {
var ces = json[i].parentid;
if (ces == 0) {
return json[i].name;
} else {
//递归调用由return返回新的值
return idgetparentname(json, json[i].parentid);
}
}
//console.log('for',i);
}
}