【问题标题】:calculate the sum of a list of lists [duplicate]计算列表列表的总和[重复]
【发布时间】:2015-02-23 22:31:15
【问题描述】:

我在http://games.usvsth3m.com/javascript-under-pressure/ 上找到了这段代码,我遇到了第 5 个问题,需要估计列表中所有整数的总和。该列表可能包含嵌套列表。因此,对于列表 [1,2,3,4,5] 或 [[1,2,3],4,5],下面的代码有效,但对于列表 [[[[[1]]]],2, 3,4] 没有。我尝试了很多小时,但我不知道如何解决它。我需要一个打击。

function arraySum(i) {

var sum =0;    
for (var id =0; id<i.length;id++){

    if(typeof i[id]==='object'){

        var ar = i[id];
        for (var dd =0; dd<ar.length;dd++ ){
            if(typeof ar[dd]==='number'){
                sum+=parseInt(ar[dd]);
            }        
        }
    }
    else
        if(typeof i[id]==='number'){
            sum+=parseInt(i[id]);
        }
    }
return sum;
}

【问题讨论】:

  • 哇,我不认为这是一个完全相同的副本,但我找到了一个。另见Finding the sum of a nested array
  • 感谢您的回复。由于重复问题,我应该删除问题吗?
  • 不,没关系。该链接将作为其他有类似问题但找不到原始链接的人的路标。

标签: javascript list nested-lists


【解决方案1】:

使用递归。

var arr = [1, 2, [3, 4, [[[5]]]]];
num = 0;

function loop (arr) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] instanceof Array) {
            loop(arr[i]);
        } else {
            num += parseInt(arr[i]);
        }
    }
}

loop(arr);

console.log(num);

小提琴 - http://jsfiddle.net/9j1hcx4x/

【讨论】:

  • 你的函数应该是return的结果,而不是增加一些全局的num变量。
  • 这行得通。这是我的想法,但我无法让它发挥作用。谢谢。
猜你喜欢
  • 2022-11-11
  • 2018-09-04
  • 2020-01-02
  • 2017-11-28
  • 2022-12-30
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 2016-05-20
相关资源
最近更新 更多