2016-10-03 102 views
-1

我有一個包含三個屬性(年份,總數,per_capita)的對象數組。 例子:將Javascript對象從字符串更改爲int的屬性

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

這些屬性是字符串,我想創建一個循環,通過數組去並將它們轉換爲int。 我嘗試了以下循環:

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

但是當我做typeof運算(數據[0]。總)它說,它的字符串。 我在程序後期遇到問題,我認爲這是因爲值不能正確計算,因爲它們不是正確的類型。 任何人都有一個想法,問題在哪裏?

+0

really int not float?你失去了精確性。 –

回答

2

parseInt不改變對象,但解析一個字符串並返回一個整數。您必須將分析的值重新分配給對象屬性。

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

這應該有幫助!

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

你只不過是轉換,但是你錯過了分配:

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) 
} 

parseInt函數返回int值,它不會改變輸入變量。

另一件事 - 如果你需要的總數是浮動的,你應該使用parseFloat函數而不是parseInt

0

你可以迭代數組,並且對象amd指定屬性的整數值。

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