将Javascript对象从字符串更改为int的属性
问题描述:
我有一个包含三个属性(年份,总数,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]。总)它说,它的字符串。 我在程序后期遇到问题,我认为这是因为值不能正确计算,因为它们不是正确的类型。 任何人都有一个想法,问题在哪里?
答
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)
}
答
这应该有帮助!
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)
答
你只不过是转换,但是你错过了分配:
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
。
答
你可以迭代数组,并且对象amd指定属性的整数值。
data.forEach(function (a) {
['year', 'total', 'per_capita'].forEach(function (k) {
a[k] = Math.floor(+a[k]);
});
});
really int not float?你失去了精确性。 –