Wpis z mikrobloga

#programowanie #javascript
Cześć,
nie wiem jak najlepiej "ugryźć" mój problem i potrzebuje waszej pomocy.

mam podobne obiekty na które składają się różne dwa zestawy właściwości
raz jest to

{
cena
waga
przeliczeniowka
} // np. 3.99 ; 400 g; 2.00 zł

a czasami mam

{
cena
waga_1
waga_2
przeliczeniowka_1
przeliczeniowka_2
}
//np. 3.99 ; 400 g - 500 g; 2.00 zł - 2.56 zł

wszystkie powyższe właściwości są "number".
-----------

Przyznam się, że nie umiem znaleźć jakiegoś poprawnego perspektywicznego zapisu tych wartości

To co chce robić to sprawdzać czy ( cena * 1000 / wagę) === przeliczeniówka.

function check (price, weight, unitPrice) {
var ratio = (price * 1e3 / weight).roundUp(2);
return ratio === unitPrice ? "OK" : ratio.toFixed(2) + " zł";
}

wyniki funkcji 'check' chciałbym zapisywać do "wynik1", ew. "wynik2"

Pytanie czy rozbudowywać funkcję "check" czy też starać się sterowanie programem zrobić jak gdyby "poziom wyżej" (a jeśli tak, to czy ktoś podpowie jak to zrobić) ?

moja pierwsza koncepcja była taka by obiekt zawsze miał 3 własności, czyli: (tylko, że waga i przeliczeniówka byłyby tablicami

{
cena: number
waga: []
przeliczeniowka: []
} // np. 3.99 ; 400 g; 2.00 zł

Myślałem też o takim podejściu
function check(n) {
var ratio (price * 1e3 / this["weight"+n]).roundUp(2);
return ratio === this["unitPrice
"+n] ? "OK" : ratio.toFixed(2) + " zł"

}

result1 = check(1);
if (obj.hasOwnProperty("result
2"):
result_2 = check(2);

Proszę pomóżcie
  • 6
  • Odpowiedz
@maciej-caderek:
function check(item) {
for (let i = 0; i < item.weight.length; i++) {
const ratio = item.price * 1000 / item.weight[i];
if (ratio !== item.unitPrice[i]) {
return false;
}
Tu jest pewien problem:
zamiast tego item.weight.length
musiałaby być zmienna wybierająca większą wartość z dwóch
item.weight.length i item.unitPrice.length (bo może nie być jednej "wagi"

ps
również Ci dziękuje
  • Odpowiedz