Wpis z mikrobloga

Czy jest jakas mozliwosc w #javascript , porownania dwoch zmiennych przy uzyciu operatora porownania zapisanego jako string?

Np. mam

let var1 = 1;
let var2 = 2;
let operator = '>';
I chce zrobic cos na zasadzie:

if(var1 operator var2)
Bez definiowania tablic operatorow/switchy i funkcji porownan.

#html
  • 18
@Marmite: Mysle ze to lepsze rozwiazanie niz definiowanie tablicy operatorow i funkcji porownan - zarowno dla czytelnosci jak i wydajnosci. A tak wyszlo ze operatory musza byc przekazywane do funkcji.
@dziadzio: o dziwo, tak. Takie funkcje mają to do siebie, że przeglądarka zna ich zachowania już na etapie kompilacji i może je bardzo mocno zoptymalizować. Wstawienie do funkcji evala sprawia, że silnik JSowy nie może już zrobić ŻADNYCH założeń dotyczących danej funkcji, bo w teorii może ona wykonać w tym evalu dowolny kod. A zatem wszystkie optymalizacje szlag trafia.

Nie zawsze najkrótszy fragment kodu będzie tym najlepszym.
Nie zawsze najkrótszy fragment kodu będzie tym najlepszy


@Marmite: to prawda ale rozwiazanie tego problemu definicja na nowo wszystkich operatorow i funkcji mija sie z celem, to zwykle marnowanie zasobow i strzelanie do muchy z armaty.
@dziadzio:

bez funkcji porównań

Są gotowe metody w Array.prototype i String.prototype ładujesz to jako callback i sprawa załatwiona. Będzie trudno bez nich robić kod w JS.

----------------------------

po prostu przekazuje metode porownania wartosci td z wartoscia inputa, do filtracji tabeli.

Array.prototype.filter(()=>cośZwraca)

Edit:

Tu jest dużo na początek:
http://www.kurshtml.edu.pl/js/array-prototype.html
Reszta nowszych rzeczy tutaj:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype

A do stringów:

http://www.kurshtml.edu.pl/js/string-prototype.html

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/prototype