将 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]);
});
});
我有一个对象数组,每个对象具有三个属性(年份、总数、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]);
});
});