将Object属性值转换为float

时间:2018-10-08 21:54:24

标签: 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: 24.12},
     {a: 12.03, b: 22.45, c: 44.12},
     {a: 15.03, b: 12.45, c: 24.12}
    ]

关于如何遍历对象并仅应用格式的任何想法,以便我可以在折线图中使用数据数组吗?

7 个答案:

答案 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