2016-12-28 3 views
0

Ich habe hier eine Funktion, die eine bestimmte Eigenschaft von einem Objekt innerhalb eines Arrays aufruft.Übergeben von Eigenschaftswerten den effizienten Weg

Jedes Objekt hat mehrere Eigenschaften, also verwende ich gerade mehrere Funktionen, um bestimmte Eigenschaften wie diese aufzurufen. Ich weiß, dass dies furchtbar ineffizient ist und dass dies viel effizienter sein könnte.

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); 

Wie kann ich die obige Funktion effizient schreiben, so dass ich mit nur einer Funktion nach bestimmten Eigenschaften suche?

+0

Es sei denn, es einen bestimmten Fehler oder geben Sie haben ich Ihre Frage zu [Code Review] bewegen würde empfehlen (http://codereview.stackexchange.com/). – chazsolo

+0

Ich wusste nicht, dass eine solche Website existiert. Gibt es ein Migrationstool oder etwas, das diese Frage an diese Site weiterleiten kann? Oder muss ich das hier löschen und dort kopieren/einfügen? – TheNuttyStudent

+0

[Es gibt eine Antwort hier] (http://meta.stackexchange.com/questions/85017/how-do-i-move-my-own-question-to-another-stack-exchange-site), die etwas Gutes hat Info. Ich markiere die Aufmerksamkeit des Moderators, um zu sehen, ob er verschoben werden kann. – chazsolo

Antwort

2

Ich bin mir nicht sicher, ob das das ist, wonach Sie suchen, aber es wird den wiederverwendeten Code los und setzt die Suche in eine Funktion.

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);

Verwandte Themen