nested - 减少 javascript 中的嵌套对象数组

标签 nested javascript-objects reduce

所以我有这个数组,我想使用reduce函数返回lci之和和mci之和

const data = [{ option:{ lci: 1, mci: 2 } }, { option:{ lci: 3, mci: 4 } }, { option:{ lci: 5, mci: 6 } }];

我已经尝试过这个,但它不起作用:

 data.reduce( (previousValue, currentValue) => {
    return {
      totalLCI: previousValue.option.lci + currentValue.option.lci,
      totalMCI: previousValue.option.lci + currentValue.option.lci,
    };
  })

最佳答案

reduce 方法需要 2 个重要的参数:你的归约函数和迭代第 0 步的默认值

这里的 reducer 有 2 个参数:

  • 所谓的previousValue:这里称为reducerTarget,因为它接收reducer主体中返回的内容
  • reducer 所在的currentValue:这里称为currentArrayItem

这可能是您想要的

    const {totalLCI, totalMCI} = data.reduce((reducerTarget, currentArrayItem) => { 
        return {
            totalLCI: reducerTarget.totalLCI + currentArrayItem.option.lci,
            totalMCI: reducerTarget.totalMCI + currentArrayItem.option.mci
        }
    }, {totalLCI: 0, totalMCI: 0})

从这里开始,从默认值开始,它在第一次迭代中执行的操作是

/* 1st step: 
    index = 0
    targetReducer = defaultValue = {totalMCI: 0, totalLCI: 0}
    currentArrayItem = {option: {lci: 1, mci: 2}}
*/
        return {
            totalLCI: 0 + 1,
            totalMCI: 0 + 2
        }

/* 2nd step: 
    index = 1
    targetReducer = previousValue = {totalMCI: 1, totalLCI: 2}
    currentArrayItem = {option: {lci: 3, mci: 4}}
*/
        return {
            totalLCI: 1 + 3,
            totalMCI: 2 + 4
        }

关于nested - 减少 javascript 中的嵌套对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68037881/

相关文章:

Java 贷款计算器基于用户输入嵌套 for 循环

literals - 此变量中的 Javascript 构造函数返回错误

Javascript:为什么 if 语句不计算函数中提升的变量

javascript - Array.reduce - 对象的奇怪行为

javascript - 减少和求和对象数组的条目

image - 减少 1000 张图片的 HTTP 请求?

php - APNS PHP JSON 负载结构

java - 内部类的原因

c - 嵌套 for/while 循环和数组,过滤掉数组中的数字

javascript - 更改此对象属性时出现错误 "Uncaught TypeError"- JavaScript