2016-12-28 66 views
0

我在这里有一个函数从数组内的对象调用一个特定的属性。传递属性值的有效途径

每个对象都有多个属性,所以现在我使用多个函数来调用特定的属性,如下所示。我知道这是非常低效的,而且这可能更有效率。

var fiftyplanets = [{ 
    "Hostname": "11 Com", 
    "Distance [pc]": 110.62, 
    "Effective Temperature [K]": 4742, 
    "Date of Last Update": "5/14/2014" 
}]; 

function findDistance(hostname) { 
    function search(am, im) { 
     if (am.Hostname === hostname) { 
      index = im; 
      return true; 
     } 
    } 

    var index; 
    if (fiftyplanets.some(search)) { 
     return fiftyplanets[index]['Distance [pc]']; 
    } 
} 

function findTemp(hostname) { 
    function search(am, im) { 
     if (am.Hostname === hostname) { 
      index = im; 
      return true; 
     } 
    } 

    var index; 
    if (fiftyplanets.some(search)) { 
     return fiftyplanets[index]['Effective Temperature [K]']; 
    } 
} 

var name = value; 
var resullt = fiftyplanets.indexOf(name); 
var dist = findDistance(name); 
var temp = findTemp(name); 

如何有效地编写上述函数,以便仅使用一个函数查找特定属性?

+0

除非有特定错误或发出你有我会建议你的问题移动到[代码审查(http://codereview.stackexchange.com/)。 – chazsolo

+0

我不知道这样的网站存在。是否有迁移工具或可以将此问题传递到该网站的内容?或者我必须删除这一个并将其复制/粘贴到那里? – TheNuttyStudent

+0

[这里有答案](http://meta.stackexchange.com/questions/85017/how-do-i-move-my-own-question-to-another-stack-exchange-site)有一些很好的信息。我会举行主持人的注意,看看它是否可以移动。 – chazsolo

回答

2

我不确定这是不是你正在寻找的,但它摆脱了重复使用的代码,并将搜索放入一个功能。

var fiftyplanets = [{ 
 
    "Hostname": "11 Com", 
 
    "DistancePc": 110.62, 
 
    "effectiveTemperatureK": 4742, 
 
    "dateOfLastUpdate": "5/14/2014" 
 
}]; 
 

 
function getInfo(info, hostname) { 
 
    function search(am, im) { 
 
     if (am.Hostname === hostname) { 
 
      index = im; 
 
      return true; 
 
     } 
 
    } 
 

 
    var index; 
 
    if (fiftyplanets.some(search)) { 
 
     return fiftyplanets[index][info]; 
 
    } 
 
} 
 

 
var name = value; 
 
var resullt = fiftyplanets.indexOf(name); 
 
var dist = getInfo('DistancePc', name);