2016-10-03 31 views
-1

Ich habe ein Array von Objekten mit jeweils drei Eigenschaften (Jahr, Summe, per_capita). Beispiel:Eigenschaften eines Javascript-Objekts von String zu Int ändern

0: Object 
    per_capita: "125.8" 
    total: "1007.2" 
    year: "2009" 

Diese Eigenschaften sind Strings und ich möchte eine Schleife erstellen, die durch das Feld geht und wandelt sie in int. Ich habe versucht, die folgende Schleife:

for (i=0; i<data.length; i++){ 
    parseInt(data[i].year, 10) 
    parseInt(data[i].total, 10) 
    parseInt(data[i].per_capita, 10) 
} 

Allerdings, wenn ich typeof tun (data [0] .total) es sagt, es ist eine Zeichenfolge. Ich habe Probleme später im Programm und ich denke, es ist, weil die Werte nicht richtig berechnet werden können, weil sie nicht der richtige Typ sind. Hat jemand eine Idee, wo das Problem liegt?

+0

wirklich int nicht float? Du verlierst die Präzision. –

Antwort

2

parseInt mutiert keine Objekte, sondern analysiert eine Zeichenfolge und gibt eine ganze Zahl zurück. Sie müssen die analysierten Werte wieder den Objekteigenschaften zuweisen.

for (i=0; i<data.length; i++){ 
    data[i].year = parseInt(data[i].year, 10) 
    data[i].total = parseInt(data[i].total, 10) 
    data[i].per_capita = parseInt(data[i].per_capita, 10) 
} 
0

Dies sollte helfen!

var a = { 
 
    per_capita: "125.8", 
 
    total: "1007.2", 
 
    year: "2009", 
 
} 
 

 
Object.keys(a).map(function(el){ 
 
    a[el] = parseInt(a[el]) 
 
}) 
 

 
console.log(a) 
 
console.log(typeof a.total)

1

Alles, was Sie die Umwandlung tat, war, aber die Zuordnung verpasst:

for (i=0; i<data.length; i++){ 
    data[i].year = parseInt(data[i].year, 10) 
    data[i].total = parseInt(data[i].total, 10) 
    data[i].per_capita = parseInt(data[i].per_capita, 10) 
} 

Die parseInt Funktion den int-Wert zurückgibt, ist es nicht die Eingangsgröße ändern.

Eine andere Sache - wenn Sie die Gesamtzahl zu schwimmen benötigen, sollten Sie die parseFloat Funktion und nicht die parseInt verwenden.

0

Sie könnten das Array und das Objekt iterieren und den ganzzahligen Wert der gewünschten Eigenschaften zuweisen.

data.forEach(function (a) { 
    ['year', 'total', 'per_capita'].forEach(function (k) { 
     a[k] = Math.floor(+a[k]); 
    }); 
});