我具有以下数据结构:
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}
]
关于如何遍历对象并仅应用格式的任何想法,以便我可以在折线图中使用数据数组吗?
答案 0 :(得分:2)
data = data.map(({ a, b, c }) => ({ a: parseFloat(a), b: parseFloat(b), c: parseFloat(c) }));
或更笼统:
data = data.map(entry =>
Object.entries(entry).reduce(
(obj, [key, value]) => (obj[key] = parseFloat(value), obj),
{}
)
);
答案 1 :(得分:2)
每个人似乎都想使用parseFloat
,但是我个人认为使用一元+
既可读性又简洁得多:
data.map(obj => ({a: +obj.a, b: +obj.b, c: +obj.c}));
我想我是少数派,但无论如何我都会把它留在这里,以防对某人有用。
答案 2 :(得分:1)
您可以使用一些简单的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])
}
}
答案 3 :(得分:0)
您可以使用javascript parseFloat()将字符串转换为浮点数。
parseFloat('12.03')
返回
12.03
答案 4 :(得分:0)
您可以映射每个数据项并将其转换为所需的格式:
const result = data.map(value => ({
a: parseFloat(value.a),
b: parseFloat(value.b),
c: parseFloat(value.c)
});
答案 5 :(得分:0)
我个人会为此使用lodash mapValues
。
const parsed = data.map(item => _.mapValues(item, parseFloat))
这只是获取每个项目,并遍历键,使用parseFloat
来更改值。与reduce
方法相比,此方法更具可读性,并且由于您没有重新发明轮子,因此不容易出现错误。
答案 6 :(得分:0)
使用.map
(每个对象)在数组的每个元素中运行一个函数,然后,如果您不知道键或键的数量,则可以使用{循环遍历对象的每个键{1}},然后使用Object.keys(el)
完成操作。
parseFloat