Ich versuche eine dynamische Funktion in JavaScript zu erstellen, in der ich ein Objekt mit einem anderen vergleichen kann und den Vergleichsoperator als String-Wert an die Funktion übergebe.Konvertiere eine String-Repräsentation eines Vergleichsoperators in einen tatsächlichen Vergleichsoperator
Beispiel zwei Objekte wie folgt aus:
{value: 1, name: "banana"}
{value: 2, name: "apples"}
I Banane Apfel vergleichen wollen, ist es eine Möglichkeit, eine String-Darstellung eines Vergleichsoperator passieren kann und es dann als Ist-Vergleich Operator in einem Funktion?
function compare (first, second, comparator) {
return first.id (comparator) second.id;
}
e.g compare(apple,banana,"<=");
//return true
compare(apple,banana,"===");
//return false
etc
Zugegeben ich mit einem Schalter oder wenn Aussage über den Komparator String dh
if (comparator === "<=")
return first.id <= second.id
if (comparator === "===")
return first.id === second.id
implementieren könnte, aber ich frage mich, ob es eine bessere effizienter Weg, es zu tun, dass vermeidet die Notwendigkeit für eine solche switch/if-Anweisung.
'return eval („first.id ‚+ Komparator +‘ second.id“);' –
Normalerweise würde man das Vergleichsverhalten als eine Funktion darstellen, und geben Sie das ein. Sie könnten sie so vordefinieren, dass Sie sie als LESSTHAN usw. bezeichnen könnten. Dann müssen Sie in Ihrer "compare" -Funktion nur die Funktion aufrufen. –