繁体   English   中英

如何获取创建的特定对象的连接值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM