我有一个看起来像这样的对象数组:
const arr1 = [
{id: 1, name: 'Dave', tax: 123.34543}
{id: 2, name: 'John', tax: 3243.12323}
{id: 3, name: 'Tom', tax: 122.34324}
]
我正在尝试舍入税值,因此最后数组应如下所示:
[
{id: 1, name: 'Dave', tax: 123.34}
{id: 2, name: 'John', tax: 3243.12}
{id: 3, name: 'Tom', tax: 122.34}
]
我尝试像这样使用map
函数:
arr1.map(value => Math.round(value.tax * 100)/100);
但是我得到的不是数组的修改对象数组,而是仅包含Math.round
的结果的数组,看起来像这样:
[ 123.34, 3243.12, 122.34]
我如何映射对象数组以获得如上所述的预期结果。
谢谢。
答案 0 :(得分:1)
您非常接近正确的解决方案,请参见下文:
arr1.map(value => {
value.tax = Math.round(value.tax * 100)/100);
return value
});
您需要返回更改后的对象,否则它将被覆盖。
希望这会有所帮助
劳埃德
答案 1 :(得分:1)
您可以在tax
函数中更新map
。
请参阅下面的实现。
const arr1 = [
{id: 1, name: 'Dave', tax: '123.34543'},
{id: 2, name: 'John', tax: '3243.12323'},
{id: 3, name: 'Tom', tax: '122.34324'},
];
const taxRoundedArray = arr1.map(item => {
let tax = Math.round(item.tax * 100)/100
return {
...item,
tax
}
});
console.log(taxRoundedArray);
答案 2 :(得分:1)
您可以使用所需值映射新对象。
const
array = [{ id: 1, name: 'Dave', tax: 123.34543 }, { id: 2, name: 'John', tax: 3243.12323 }, { id: 3, name: 'Tom', tax: 122.34324 }],
result = array.map(o => Object.assign({}, o, { tax: Math.round(o.tax * 100) / 100 }));
console.log(result);
答案 3 :(得分:0)
Array.map处理数组中的条目并返回处理后的值。在尝试中,您只返回了更新的税,但是,您将需要返回对象。尝试关注
const arr1 = [{id: 1, name: 'Dave', tax: 123.34543},{id: 2, name: 'John', tax: 3243.12323},{id: 3, name: 'Tom', tax: 122.34324}];
const arr2 = arr1.map(({tax, ...rest}) => ({...rest, tax: Math.round(tax * 100)/100}));
console.log(arr2);
答案 4 :(得分:0)
您可以这样做:
const arr1 = [
{id: 1, name: 'Dave', tax: '123.34543'},
{id: 2, name: 'John', tax: '3243.12323'},
{id: 3, name: 'Tom', tax: '122.34324'}
];
const result = arr1.map(user => {
user.tax = (Math.round(+user.tax * 100) / 100);
return user;
});
console.log(result);
答案 5 :(得分:0)
map
遍历数组,并为每个对象返回一个新的税额,该税额已转换为固定为两位小数的浮点数。
const arr1 = [{"id":1,"name":"Dave","tax":"123.34543"},{"id":2,"name":"John","tax":"3243.12323"},{"id":3,"name":"Tom","tax":"122.34324"}];
const arr2 = arr1.map(obj => {
const tax = +Number.parseFloat(obj.tax).toFixed(2);
return { ...obj, tax };
})
console.log(arr2);