将 Javascript 对象的属性从字符串更改为整数

Changing properties of a Javascript object from string to int

我有一个对象数组,每个对象具有三个属性(年份、总数、per_capita)。 示例:

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(data[0].total) 时,它说它是一个字符串。 我稍后在程序中遇到问题,我认为这是因为无法正确计算值,因为它们不是正确的类型。 有人知道问题出在哪里吗?

parseInt 不改变对象但解析字符串和 returns 整数。您必须将解析的值重新分配回对象属性。

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).forEach(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函数returnsint值,它不改变输入变量。

另一件事 - 如果您需要浮动总数,您应该使用 parseFloat 函数而不是 parseInt

您可以迭代数组和对象,并根据需要分配属性的整数值。

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