Javascript 将对象属性值转换为浮点值
我有以下数据结构:Javascript 将对象属性值转换为浮点值,javascript,arrays,object,Javascript,Arrays,Object,我有以下数据结构: const data = [ {a: '12.03', b: '2.45', c: '24.12'}, {a: '12.03', b: '22.45', c: '44.12'}, {a: '15.03', b: '12.45', c: '24.12'}, . . . n ] 我想把字符串转换成浮点数: const data = [ {a: 12.03, b: 2.45, c: 2
const data = [
{a: '12.03', b: '2.45', c: '24.12'},
{a: '12.03', b: '22.45', c: '44.12'},
{a: '15.03', b: '12.45', c: '24.12'},
.
.
.
n
]
我想把字符串转换成浮点数:
const data = [
{a: 12.03, b: 2.45, c: 24.12},
{a: 12.03, b: 22.45, c: 44.12},
{a: 15.03, b: 12.45, c: 24.12}
]
你知道如何在对象上迭代并应用格式以便在折线图中使用数据数组吗?你可以使用javascript parseFloat()将字符串转换成浮点
parseFloat('12.03')
返回
12.03
可以使用javascript parseFloat()将字符串转换为浮点
parseFloat('12.03')
返回
12.03
或更一般的:
data = data.map(entry =>
Object.entries(entry).reduce(
(obj, [key, value]) => (obj[key] = parseFloat(value), obj),
{}
)
);
或更一般的:
data = data.map(entry =>
Object.entries(entry).reduce(
(obj, [key, value]) => (obj[key] = parseFloat(value), obj),
{}
)
);
您可以映射每个数据项并将其转换为所需格式:
const result = data.map(value => ({
a: parseFloat(value.a),
b: parseFloat(value.b),
c: parseFloat(value.c)
});
您可以映射每个数据项并将其转换为所需格式:
const result = data.map(value => ({
a: parseFloat(value.a),
b: parseFloat(value.b),
c: parseFloat(value.c)
});
就我个人而言,我会用lodash来做这个
const parsed = data.map(item => _.mapValues(item, parseFloat))
这只需获取每个项,并在键上迭代,使用
parseFloat
更改值。与reduce
方法相比,该方法可读性更高,并且不太容易出现错误,因为您没有重新发明轮子。我个人会使用lodash
const parsed = data.map(item => _.mapValues(item, parseFloat))
这只需获取每个项,并在键上迭代,使用
parseFloat
更改值。与reduce
方法相比,该方法可读性更高,并且不太容易出现错误,因为您不需要重新发明轮子。使用.map
(每个对象)通过数组的每个元素运行函数,如果您不知道关键点或关键点的数量,您可以使用object.keys(el)
循环遍历对象的每个键,然后使用parseFloat
执行该技巧
data.map((el) => {
Object.keys(el).forEach((key) => {
el[key] = parseFloat(el[key])
})
})
使用
.map
(每个对象)在数组的每个元素中运行一个函数,然后如果不知道关键点或关键点的数量,可以使用对象.keys(el)
循环对象的每个关键点,然后使用parseFloat
执行此操作
data.map((el) => {
Object.keys(el).forEach((key) => {
el[key] = parseFloat(el[key])
})
})
您可以通过一些简单的for循环来实现这一点
const data = [
{a: '12.03', b: '2.45', c: '24.12'},
{a: '12.03', b: '22.45', c: '44.12'},
{a: '15.03', b: '12.45', c: '24.12'},
];
//Loop through each array
for (var arr in data){
//Loop through eact data point
for (var point in data[point]){
//Convert to float
data[point][i] = parseFloat(data[point][i])
}
}
您可以通过一些简单的for循环来实现这一点
const data = [
{a: '12.03', b: '2.45', c: '24.12'},
{a: '12.03', b: '22.45', c: '44.12'},
{a: '15.03', b: '12.45', c: '24.12'},
];
//Loop through each array
for (var arr in data){
//Loop through eact data point
for (var point in data[point]){
//Convert to float
data[point][i] = parseFloat(data[point][i])
}
}
每个人似乎都想使用
parseFloat
,但我个人认为使用一元+
同样可读,而且更简洁/惯用:
data.map(obj => ({a: +obj.a, b: +obj.b, c: +obj.c}));
我想我是少数,但无论如何,我会把它留在这里,以防它对某人有用。似乎每个人都想使用
parseFloat
,但我个人认为使用一元+
,它同样可读,而且更简洁/惯用:
data.map(obj => ({a: +obj.a, b: +obj.b, c: +obj.c}));
我想我是少数,但无论如何,我会把这个留在这里,以防这对某人有用。你让人们水平滚动,只是为了让它成为一行……)谢谢你的帮助。我用更一般的解决方案解决了这个问题。非常感谢!你让人们水平滚动,只是为了让它成为一行:)谢谢你的帮助。我用更一般的解决方案解决了这个问题。非常感谢!最简单的是一元运算符:
data.forEach(obj=>Object.keys(obj.forEach)(key=>obj[key]=+obj[key])最简单的是一元运算符:data.forEach(obj=>Object.keys(obj.forEach)(key=>obj[key]=+obj[key])代码>。请添加一些解释。不鼓励只使用代码的答案,最终将被删除。请添加一些解释。不鼓励只使用代码的答案,最终将被删除。