Javascript递归添加所有 "total"属性并返回给用户

标签 javascript recursion

我得到了以下数据,我需要返回递归总数(在本例中为 60)。下面的代码返回TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined指向object。我认为我在这里使用的代码不是用于数组定义的。如何将其转换为使用数组?

var data = [
    {
        total: 10,
        moreData: {
            total: 10
        }
    },
    {
        total: 10,
        moreData: {
            total: 10,
            moreData: {
                total: 10
            }
        }
    },
    {
        total: 10
    }
];

function sumUp(object){
    object.totalValue=0;
    for(child of object.children){
        object.totalValue+=sumUp(child);
    }
    return object.totalValue+object.value;
}

totalofall=sumUp(data);
console.log(totalofall);

最佳答案

结合array.prototype.maparray.prototype.reduce的递归方式:

var data = [
    {
        total: 10,
        moreData: {
            total: 10
        }
    },
    {
        total: 10,
        moreData: {
            total: 10,
            moreData: {
                total: 10
            }
        }
    },
    {
        total: 10
    }
];

var sum = data.map(totInObj).reduce((m, o) => m + o, 0);
console.log(sum);

function totInObj(obj) {
    return obj.moreData ? obj.total + totInObj(obj.moreData) : obj.total;
}

关于Javascript递归添加所有 "total"属性并返回给用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48535603/

相关文章:

javascript - 仅允许不以零开头的整数的函数 onInput 事件

css - 用于分割字符串的 SASS 函数仅在第一次出现时分割

python - 使用递归来反转python中数字的顺序

javascript - 编写 if 语句的新方法

JavaScript 多个条件?

Mongodb递归查询

c# - 使用 C# 循环使用 Wpf tabitem 控件?

haskell - 初学者 Haskell 问题 : how do I find indices in Haskell (manually using recursion without using findIndices)

javascript - 考虑到比例如何计算位置 x, y

javascript - 这些迭代有什么不同?