【发布时间】:2017-05-25 13:05:13
【问题描述】:
这是我的 JSON 字符串
[{"$id":"1","GeoName":"EAST","Value2":87.88221970554928,"Value4":90.71955219607294,"Value1":18.44377295716579,"Value3":16.732108234801206},{"$id":"2","GeoName":"WEST","Value2":87.88221970554928,"Value4":90.71955219607294,"Value1":18.44377295716579,"Value3":16.732108234801206}]"
这是我在 Stringyfying 之前的 JSON 对象
**MyObj:**
0:Object
$id:"1"
Value1:18.44377295716579
GeoName:"EAST"
Value2:87.88221970554928
Value3:16.732108234801206
Value4:90.71955219607294
1:Object
$id:"2"
Value1:18.44377295716579
GeoName:"WEST"
Value2:87.88221970554928
Value3:16.732108234801206
Value4:90.71955219607294
有没有办法在我的 JSON 的每个对象中将所有值(甚至单独的 value1、value2...)四舍五入到小数点后 2 位?
喜欢
0:Object
$id:"1"
Value1:18.44
GeoName:"EAST"
Value2:87.89
Value3:16.73
Value4:90.72
1:Object
$id:"2"
Value1:18.44
GeoName:"WEST"
Value2:87.89
Value3:16.73
Value4:90.71
我尝试过使用
Obj = JSON.parse(JSON.stringify(MyObj, function (GeoName, Value1) {
return Value1.toFixed ? Number(Value1.toFixed(2)) : Value1;
}));
这对我不起作用。
有没有办法通过调整上面的代码行来实现这一点,或者有更好的方法来解决这个问题?
Edit1(根据 wostex 建议的方法)
var numKeys = ['ShareValue','ReachValue','DepthValue','WidthValue'];
MyObj=Obj.map(e => Object.assign(e,Object.keys(e).filter(k => numKeys.includes(k)).map(v => Object.assign({[v]: parseFloat(e[v]).toFixed(2)}))))
这就是我的对象的样子
0:Object
0:Object
ReachValue:87.88
1:Object
DepthValue:16.73
2:Object
ShareValue:18.44
3:Object
WidthValue:90.71
$id:"1"
ShareValue:18.44377295716579
GeoName:"EAST"
ReachValue:87.88221970554928
DepthValue:16.732108234801206
WidthValue:90.71955219607294
编辑2
Obj = JSON.parse(JSON.stringify(BubbleObj));
var numKeys = ['ShareValue','ReachValue','DepthValue','WidthValue'];
var MyObj=Obj.map(e => Object.assign(e,Object.keys(e).filter(k => numKeys.includes(k)).map(v => Object.assign({[v]: parseFloat(e[v]).toFixed(2)}))))
这里 Obj 有来自问题第一行的 JSON 字符串,而 BubbleObj 有我在问题中提到为 MyObj 的 Object。
【问题讨论】:
-
仅供参考,您在对象中有多个具有相同名称的属性,这是无效的。只有最后定义的那个才可以访问
-
似乎对我有用:jsfiddle.net/5v2dzmhe。检查控制台,你的值是四舍五入的。
-
@RoryMcCrossan 我的错,它们是两个不同名称的对象,我现在已经更改了。
-
你可以只遍历数组和对象中的键而不解析它。
-
@Shekar.gvr 我不是指
GeoName的值,我的意思是你在每个对象中定义了两次Value3
标签: javascript jquery json asp.net-mvc