Javascript 更新所有要舍入两位小数的对象值

Javascript 更新所有要舍入两位小数的对象值,javascript,arrays,object,rounding,Javascript,Arrays,Object,Rounding,我有一个来自API的动态响应,每次都可能有不同的响应。我需要循环遍历一个对象数组,并找到属于数字类型的值。然后将它们四舍五入到小数点后两位。从下面的示例中,对象键值每次都可能不同 API可能的响应: response = [ { case: "abc", price: "123.1234", manager: "joe black", duration: "3456.1231321" }, {

我有一个来自API的动态响应,每次都可能有不同的响应。我需要循环遍历一个对象数组,并找到属于数字类型的值。然后将它们四舍五入到小数点后两位。从下面的示例中,对象键值每次都可能不同

API可能的响应:

response = [
 {
  case: "abc",
  price: "123.1234",
  manager: "joe black",
  duration: "3456.1231321"
 },
 {
  case: "bbb",
  price: "23.4897987",
  manager: "jill smith",
  duration: "78974.12156464"
 }
]

or

response = [
 {
  case: "apl",
  yield: "90.1209312093",
  average: "100.123,
 },
 {
  case: "ltl",
  yield: "80666.23131313",
  average: "4512.7897987,
 }
]
预期结果:

response = [
 {
  case: "abc",
  price: "123.12",
  manager: "joe black",
  duration: "3456.12"
 },
 {
  case: "bbb",
  price: "23.49",
  manager: "jill smith",
  duration: "78974.12"
 }
]

or

response = [
 {
  case: "apl",
  yield: "90.12",
  average: "100.12,
 },
 {
  case: "ltl",
  yield: "80666.23",
  average: "4512.79,
 }
]

正如建议的那样,您可以使用Object.entries()获取数组中每个项中的所有单个键/值对。然后,您可以通过这些循环测试数字。找到的任何数字都可以四舍五入到小数点后两位,并且条目会在原始数组上更新

比如:

let响应=[
{
案例:“abc”,
价格:“123.1234”,
经理:“乔·布莱克”,
持续时间:“3456.1231321”
},
{
案例:“bbb”,
价格:“23.4897987”,
经理:“吉尔·史密斯”,
持续时间:“78974.12156464”
},
{
案例:“apl”,
收益率:“90.1209312093”,
平均:“100.123”
},
{
案例:“ltl”,
收益率:“80666.231313”,
平均值:“4512.7897987”
}
]
响应。forEach(函数(r){
设rValues=Object.entries(r);
rValues.forEach(函数(e){
//e[0]是键,e[1]是值
设n=数(e[1]);
如果(!isNaN(n)){
r[e[0]]=n.toFixed(2);
}
})
})

控制台日志(响应)您可以使用map()遍历数组的所有对象,并使用Object.keys().forEach遍历所有键。然后,如果值字符串包含数字,则将所有值解析为float。最后,使用toFixed()对浮点进行舍入,该函数返回一个转换为字符串的舍入浮点

let response1=[{
案例:“abc”,
价格:“123.1234”,
经理:“乔·布莱克”,
持续时间:“3456.1231321”
},
{
案例:“bbb”,
价格:“23.4897987”,
经理:“吉尔·史密斯”,
持续时间:“78974.12156464”
}
]
让响应2=[{
案例:“apl”,
收益率:“90.1209312093”,
平均值:“100.123”,
},
{
案例:“ltl”,
收益率:“80666.231313”,
平均值:“4512.7897987”
}
]
函数轮(数组){
设四舍五入=数组;
四舍五入。地图((el)=>{
Object.keys(el).forEach(函数(key){
如果(!isNaN(parseFloat(el[key])){
el[key]=parseFloat(el[key]);
el[key]=el[key].toFixed(2);
}
});
})
控制台日志(四舍五入);
}
轮(响应1);

轮(2)您可以使用
Object.entries()