我在我的React应用上有以下代码:
var numberOfAnswers = 0
var sumOfAnswers = 0
respostas.forEach(function (element,index) {
console.log(index+"-"+element["responses"])
numberOfAnswers += element["responses"]
sumOfAnswers += (index*element["responses"])
})
它运行良好,但是我想使用类似的东西:
const arrSum = respostas => respostas.reduce((a,b) => a + b, 0)
是否有可能使用reduce()来完成,如果可能,我该怎么做?
确定,有可能
const [numberOfAnswers, sumOfAnswers] = respostas.reduce((res, element, index) =>
[
res[0] + element.responses,
res[1] + index * element.responses
] , [0, 0])
使用reduce,您可以通过将变量作为默认对象来实例化变量(请参见第二个参数),然后在遍历数组时填充该对象。 reduce的第一个参数接受一个回调函数,其中该函数接受3个参数,即总对象,要迭代的当前项及其索引。在每次迭代中,都填充该对象并返回它,以便下一次迭代可以访问更新的数据。
尝试这样的事情:
let data = repostas.reduce((object, current, index) => {
object.numberOfAnswers += current["responses"]
object.sumOfAnswers += (index * current["responses"])
return object
}, { numberOfAnswers: 0, sumOfAnswers: 0})
然后,您可以仅通过数据对象访问点。