![](/img/trans.png)
[英]How to get nested values from an object and push to another newly created object/document in MongoDB?
[英]how to get the connected values for the particular object created
我有两个杂种
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创建新对象时,必须向该对象添加祖先和ages属性(示例:当var sandeep = new Person('sandeep', peopleTree, ages)
对象创建时, sandeep.ancestors
应该给出['sandeep', 'shashi', 'vinoj']
和sandeep.ages
应该给出[23, 26, 26]
sandeep.ages
[23, 26, 26]
)
请参阅此 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);
该解决方案遍历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>');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.