String array u numericki array

Pozdrav.

Radim jednu stvar sa VueJS i u JSON fajlu imam numericku vrijednost spremljenu u obliku stringa.

Imam nekoliko checkbox-ova koji sadrze vrijednosti koje dohvatim iz JSON fajla i kada se selektuje spremim iste u array unutar data objekta u sljedecem obliku

checkedInvoice: []

Naravno vrijednosti se spreme u obliku stringa, a stvar je u tome da cekirane vrijednosti moram sabrati.To sam odlucio da rijesim preko computed properties na klasican nacin

calculateItems: function() {
     return this.checkedInvoice.reduce( function(a,b) {
           return a + b;
     } );
}

Ono sto me zanima kako pretvoriti taj string array u numericki, jer ako imam npr u array-u ['15','23'] ovaj computed propery ce sabrati 2 stringa i dobit ce se ocekivano 1523, a to mi ne treba.

Postoji parseInt metoda ali ne vidim nacin na koji bi to rijesio sa njom.

Neka ideja ?

calculateItems: function() {
    return this.checkedInvoice.reduce( function(a,b) {
        return parseInt(a) + parseInt(b);
    });
}

parseInt()

1 Like

haha svaka cast :slight_smile:

Imas pivo

Hvala :slight_smile:

E’, da mi je pivo za svaki rijesen zadatak - ja bi’ bio pijan covjek. :stuck_out_tongue:

A konverzija moze i ovako sa svim elementima niza odjednom:

function convertstring2int(a) {
    return parseInt(a);
}

var strings = ['1', '4', '9'];
var ints = strings.map(convertstring2int);

console.log(ints);

Mala napomena, kada koristis parseInt metodu (a ako podrzavas starije browsere), dobra je ideja uvijek proslijediti 10 kao drugi argument parseInt funkcije. Taj drugi argument oznacava bazu koja se koristi za pretvaranje, i u novijim browserima je ona po defaultu 10, ali u starijima je znala biti 8 ako je prva znamenka broja 0 (npr parseInt( '01' ) bi koristio bazu 8).

2 Likeova

https://pbs.twimg.com/media/CAIWPO_WYAAHWyN.png:large

Hvala @apazinjan , ali stariji preglednici mi nisu toliko bitni, mada postaviti cu taj fallback nista me ne kosta.

Zna li neko kako u VueJS-u rijesiti problem checkbox-a sa istim value atributom ? Radi se o tome da cijena moze biti ista i onda kada korisnik checkira jedan chebox sa istom vrijednosti, automatski ce se oznaciti i drugi sto mi ne treba i naravno suma nece biti dobra jer je samo jedan odabrati i sabrati ga sa ostalim.

Hmm mozes mozda staviti kod online da vidim primjer problema?

Ima koda malo vise, da to izvlacim , ali ovaj je princip u biti sa oficijelne vuejs stranice

https://jsfiddle.net/LbLh30m2/

Stvar je u tome sto ja vrijednosti ispisujem iz JSON fajla dinamicki i nista vise.

Uglavnom ako 2 chekboxa imaju isti value, klikom na jedan, cekira se i drugi, i ne spremi se u array(spremi se samo jedna vrijednost) i samim tim suma ne bude ok :slight_smile: To je cijela bit.

Hmm nisam jos koristio Vue (cekam verziju 2), pa ne znam da li je ovo najbolji nacin za to napraviti, ali evo ti primjera koji radi:
https://jsfiddle.net/LbLh30m2/1/

1 Like

Hvala, radi.

I ja se igram s VueJS, odnedavno tako da ne znam dosta stvari ali izgleda kao jako dobra stvar :slight_smile:

VueJS 2 nece imati “pipes” filtere, sto mi se bas ne svidja, jer to samim tim zahtjeva vise pisanja JS-a :slight_smile:

Meni se svidjelo objasnjenje zasto je to tako, ne znam da li si poslusao ovo ali svakako bih preporucio, kad uhvatis vremena: https://www.youtube.com/watch?v=c9esL3I4IGM

Citao sam nesto, a i poceo sam sa gledanjem ovog streama ali brzo sam stao.

U biti pipes filteri su ok za neke jako simple stvari, za nesto malo kompleksnije moraju se uvesti computed properties.

Evo npr ja sam imao slucaj gdje u JSON fajlu imam paid: 1 (placeno) i paid: 0 (nije placeno) i sad treba filtrati na vrhu sve ne placene iteme + 20 placenih itema, plus omoguciti search filtriranje kao i prikazivanje samo unpaid itema (klikom na button) i filtriranje svih itema (klikom na button - ovo jos nisam rijesio jer mi je full komplikovano).

I tu pipes filteri jednostavno i nisu od pomoci.