如何使用reduce()代替带有ReactJs应用程序的传统foreach循环

问题描述 投票:1回答:2

我在我的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()来完成,如果可能,我该怎么做?

reactjs
2个回答
0
投票

确定,有可能

const [numberOfAnswers, sumOfAnswers] = respostas.reduce((res, element, index) => 
  [
    res[0] + element.responses, 
    res[1] + index * element.responses
  ] , [0, 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})

然后,您可以仅通过数据对象访问点。

© www.soinside.com 2019 - 2024. All rights reserved.