var peopleTree = {
"sandeep": "shashi",
"nanha": "shashi",
"harish": "nanha",
"divya": "harish",
"arjun": "sandeep",
"shashi": "vinoj",
"vishal": "divya"
}
和
var ages = {
'sandeep': 23,
'shashi': 26,
'nanha': 22,
'harish': 24,
'divya': 30,
'arjun': 25,
'vinoj': 26,
'vishal': 5
}
使用class person创建新对象时,必须将ancestors和age属性添加到
object(例如:创建var sandeep = new Person('sandeep', peopleTree, ages)
对象时,sandeep.ancestors
应该给出
['sandeep', 'shashi', 'vinoj']
和sandeep.ages
应该[23, 26, 26]
)
答案 0 :(得分:1)
参见this JSFiddle。
的JavaScript
var peopleTree = {
"sandeep": "shashi",
"nanha": "shashi",
"harish": "nanha",
"divya": "harish",
"arjun": "sandeep",
"shashi": "vinoj",
"vishal": "divya"
}
var ages = {
'sandeep': 23,
'shashi': 26,
'nanha': 22,
'harish': 24,
'divya': 30,
'arjun': 25,
'vinoj': 26,
'vishal': 5
}
function getAncestors(name, peopleTree, ancestors){
if(!ancestors){
ancestors = [];
}
ancestors.push(name);
if(peopleTree[name]){
return getAncestors(peopleTree[name], peopleTree, ancestors);
}
return ancestors;
}
function getAges(ancestors, agesList){
var ages = [];
for(var i = 0; i < ancestors.length; i++){
var age = agesList[ancestors[i]];
if(age){
ages.push(age);
}
}
return ages;
}
function Person(name, peopleTree, ages){
this.name = name;
this.ancestors = getAncestors(name, peopleTree);
this.ages = getAges(this.ancestors, ages);
}
var sandeep = new Person('sandeep', peopleTree, ages);
答案 1 :(得分:0)
此解决方案遍历peopleTree
,然后从祖先阵列中构建数组
function Person(name, peopleTree, ages) {
this.name = name;
this.ancestors = [name];
while (peopleTree[name]) {
this.ancestors.push(peopleTree[name]);
name = peopleTree[name];
}
this.ages = this.ancestors.map(function (a) { return ages[a]; });
}
var peopleTree = { "sandeep": "shashi", "nanha": "shashi", "harish": "nanha", "divya": "harish", "arjun": "sandeep", "shashi": "vinoj", "vishal": "divya" },
ages = { 'sandeep': 23, 'shashi': 26, 'nanha': 22, 'harish': 24, 'divya': 30, 'arjun': 25, 'vinoj': 26, 'vishal': 5 },
sandeep = new Person('sandeep', peopleTree, ages);
document.write('<pre>' + JSON.stringify(sandeep.ancestors, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(sandeep.ages, 0, 4) + '</pre>');