【发布时间】:2015-06-30 09:01:40
【问题描述】:
我正在尝试编写一个函数,该函数将提取和汇总所有整数,无论给定数组有多少层(我在这里说的是多维数组)。到目前为止,这是我所得到的:
function addTheNumbers (someArray) {
var onlyNumbers = someArray.filter(function(a){ return typeof(a)=='number'; });
for (i = 0; i < onlyNumbers.length; i++) {
// idk
}
}
var sampleArray = ['word',['a','b','c'],12314,'longer phrase',5,[123,123,2],10,3874,32];
addTheNumbers(sampleArray);
我有两个担心:
1) 我觉得我的过滤器只会提取给定数组中单独存在的数字,而不是所有数组中的所有数字……不知道如何解决它。
2) 我知道,一旦我提取了所有数字,它们将存储在一个对象/数组中,我必须以某种方式遍历它以将它们全部添加在一起,但是……我又一次不知道该怎么做。
JSFiddle 让事情变得更简单。
【问题讨论】:
-
如果元素是数组,则递归地应用 addTheNumbers。
-
您的问题可以描述为两个较小的问题:1)展平数组,2)对元素求和(如果它们是数字)。
-
typeof不带括号。
标签: javascript arrays function numbers