2016-12-28 106 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);