使用数组中对象值的四舍五入百分比获得 100%
Get 100% with rounded percentages of objects values in an array
我有一个对象数组,对象的值是百分比。有没有办法将这些值四舍五入并在添加时仍然得到 100%?
const items = [
{
name: 'Something',
value: 20.4
},
{
name: 'something else',
value: 36.6
},
{
name: 'another thing',
value: 21.5
},
{
name: 'other item',
value: 21.5
}
];
和return类似这样的东西
const items = [
{
name: 'Something',
value: 20
},
{
name: 'something else',
value: 37
},
{
name: 'another thing',
value: 21
},
{
name: 'other item',
value: 22
}
];
实现此目的的一种方法是遍历数组,维护舍入值的滚动总和,然后将数组中的最后一个值设置为 100 - sum
:
const items = [
{ name: 'Something', value: 20.4 },
{ name: 'something else', value: 36.6 },
{ name: 'another thing', value: 21.5 },
{ name: 'other item', value: 21.5 }
];
let sum = 0;
const rounded = items.map(({name, value}, i) => {
if (i == items.length - 1) {
return { name, value: 100 - sum };
}
value = Math.round(value);
sum = sum + value;
return { name, value };
});
console.log(rounded);
我有一个对象数组,对象的值是百分比。有没有办法将这些值四舍五入并在添加时仍然得到 100%?
const items = [
{
name: 'Something',
value: 20.4
},
{
name: 'something else',
value: 36.6
},
{
name: 'another thing',
value: 21.5
},
{
name: 'other item',
value: 21.5
}
];
和return类似这样的东西
const items = [
{
name: 'Something',
value: 20
},
{
name: 'something else',
value: 37
},
{
name: 'another thing',
value: 21
},
{
name: 'other item',
value: 22
}
];
实现此目的的一种方法是遍历数组,维护舍入值的滚动总和,然后将数组中的最后一个值设置为 100 - sum
:
const items = [
{ name: 'Something', value: 20.4 },
{ name: 'something else', value: 36.6 },
{ name: 'another thing', value: 21.5 },
{ name: 'other item', value: 21.5 }
];
let sum = 0;
const rounded = items.map(({name, value}, i) => {
if (i == items.length - 1) {
return { name, value: 100 - sum };
}
value = Math.round(value);
sum = sum + value;
return { name, value };
});
console.log(rounded);