Javascript - reduce 方法返回 object 对象
Javascript - reduce method returning object object
我有一个数组 topArr
,我正在尝试获取结果对象的总和。我使用 .reduce()
方法来完成此操作。然后我声明另一个变量等于带逗号放置的总和。
下面有两个尝试代码片段示例。
首先,我得到 [object Object]48,883
的 return 值。
第二个例子,我得到数组中第一个数字的 return 值,它没有组合其他对象。
我希望两个结果的总和等于金额 543,810
这是我的代码片段。
let topArr = [
{ result: "494,927", risk: "HIGH", sector: "Online" },
{ result: "48,883", risk: "HIGH", sector: "Retail Stores" },
],
sum = topArr.reduce(function (a, e) {
return a + Number(e.result.replace(/(,\s*)+/g, '').trim());
})
let sumComma = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(sumComma)
let topArr = [
{ result: "494,927", risk: "HIGH", sector: "Online" },
{ result: "48,883", risk: "HIGH", sector: "Retail Stores" },
],
sum = topArr.reduce(function (e) {
return Number(e.result.replace(/(,\s*)+/g, '').trim());
})
let sumComma = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(sumComma)
您没有将初始值传递给 .reduce
,因此初始值默认为数组中的第一项,它是一个对象 - 因此 a + Number(...)
导致连接对象(强制转换为字符串)使用 Number 调用。
改为传递初始值 0:
let topArr = [{
result: "494,927",
risk: "HIGH",
sector: "Online"
},
{
result: "48,883",
risk: "HIGH",
sector: "Retail Stores"
},
],
sum = topArr.reduce(function(a, e) {
return a + Number(e.result.replace(/(,\s*)+/g, '').trim());
}, 0)
let sumComma = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(sumComma)
你需要给reduce一个初始值才能从
累加
const sum = topArr.reduce((acc, cur) => {
return acc + Number(cur.result.replace(/(,\s*)+/g, '').trim());
}, 0)
我有一个数组 topArr
,我正在尝试获取结果对象的总和。我使用 .reduce()
方法来完成此操作。然后我声明另一个变量等于带逗号放置的总和。
下面有两个尝试代码片段示例。
首先,我得到 [object Object]48,883
的 return 值。
第二个例子,我得到数组中第一个数字的 return 值,它没有组合其他对象。
我希望两个结果的总和等于金额 543,810
这是我的代码片段。
let topArr = [
{ result: "494,927", risk: "HIGH", sector: "Online" },
{ result: "48,883", risk: "HIGH", sector: "Retail Stores" },
],
sum = topArr.reduce(function (a, e) {
return a + Number(e.result.replace(/(,\s*)+/g, '').trim());
})
let sumComma = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(sumComma)
let topArr = [
{ result: "494,927", risk: "HIGH", sector: "Online" },
{ result: "48,883", risk: "HIGH", sector: "Retail Stores" },
],
sum = topArr.reduce(function (e) {
return Number(e.result.replace(/(,\s*)+/g, '').trim());
})
let sumComma = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(sumComma)
您没有将初始值传递给 .reduce
,因此初始值默认为数组中的第一项,它是一个对象 - 因此 a + Number(...)
导致连接对象(强制转换为字符串)使用 Number 调用。
改为传递初始值 0:
let topArr = [{
result: "494,927",
risk: "HIGH",
sector: "Online"
},
{
result: "48,883",
risk: "HIGH",
sector: "Retail Stores"
},
],
sum = topArr.reduce(function(a, e) {
return a + Number(e.result.replace(/(,\s*)+/g, '').trim());
}, 0)
let sumComma = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
console.log(sumComma)
你需要给reduce一个初始值才能从
累加const sum = topArr.reduce((acc, cur) => {
return acc + Number(cur.result.replace(/(,\s*)+/g, '').trim());
}, 0)