我有一个嵌套数组

[1,2,4,[2,6,[3,2],4],7]

现在输出数组应该是[1,2,4,4,12,9,6,8,7],其中每个元素都是element * depth of array的输出;

现在得到数组的元素之和将得到53

我实现了一个递归方法,如下所示

    let level = 1
    let sum = 0
    function recursive(arr){
     arr.forEach(i=> {
       multiplier(i)
     })
    }
    function multiplier(i){
     if(Array.isArray(i)){
       level++
       recursive(i);
       
     } else {
          sum += i*level 
       }
    }

我做错了什么?如何控制变量水平?

推荐答案

您可以接受一个函数,该函数获取数组和可能的已知深度,并返回总和.

const
    data = [1, 2, 4, [2, 6, [3, 2], 4], 7],
    sum = (data, depth = 1) => {
        let total = 0;
        for (const value of data) {
            total += Array.isArray(value)
                ? sum(value, depth + 1)
                : value * depth;
        }
        return total;
    },
    result = sum(data);

console.log(result);

Javascript相关问答推荐

如何使用Echart 5.5.0创建箱形图

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

如何粗体匹配的字母时输入搜索框使用javascript?

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

使用GraphQL查询Uniswap的ETH价格

我怎么才能得到Kotlin的密文?

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

在我的index.html页面上找不到我的Java脚本条形图

重新呈现-react -筛选数据过多

有没有办法通过使用不同数组中的值进行排序

未找到用于 Select 器的元素:in( puppeteer 师错误)

TabNavigator和StackNavigator之间的Reaction Native中的导航问题

JQuery使用选项填充HTMLSELECT并设置默认结果,默认结果显示为空

计算对象数组中属性的滚动增量

是否有静态版本的`instanceof`?

ReactJS在类组件中更新上下文

REACT-本机错误:错误类型错误:无法读取未定义的容器的属性

验证Java脚本函数中的两个变量

Reaction路由v6.4+数据API:重试加载程序而不显示错误

如果未定义,如何添加全局变量