2016-04-21 36 views
3

任何人都可以帮助我。我如何在数组内总结数字

我已经创建了一个函数,其中有一个数组包含整数的字符串表示形式。

var a = ['11', '22', '33' ,'44']; 

我想要做的是得到数组中每个元素的个别数字的总和。例如,包含'11'的元素会给我2(1 + 1),'22'会给我4(2 + 2),等等......所以我应该得到[2,4,6,8]作为最终输出。我怎样才能做到这一点。

谢谢

+3

你是什么意思“一个数字的总和”?它看起来像你所有乘以2. –

+1

你卡在哪里? –

+1

我猜他的意思是输出是[2,4,6,8],那是对的吗? – JordanHendrix

回答

3

我假设你意[2,4,6,8]作为输出,这将是您提供的每个元件的阵列中的数字的总和:

JsBin Example

var a = ['11', '22', '33' ,'44']; 

var b = a.map(function(num) { 
    return num.split('').map(Number).reduce(function(a, b) { 
    return a + b; 
    }); 
}); 

// b = [2,4,6,8] 
+1

对不起,我的意思是2,4,6,8。谢谢。 –

+0

np,我编辑了这个问题,所以现在应该没问题,希望有一些downvoters现在回来并且不要求你了 – JordanHendrix

0

我不知道这是你在问什么,但我给它一个去。

var a = [11,22,33,44]; 
var b = []; 
for(i in a){ 
    b.push(a[i]*2); 
} 
//b == [22,44,66,88] 

你的阵列是一个字符串,所以你可能要在​​功能包a[i]

1

另一种方法使用数学:

var a = ['11', '22', '33' ,'44']; 
 
var res = a.map(Number).map(function(digit) { 
 
    var result = 0; 
 
    while(digit) { 
 
     result += digit % 10; 
 
     digit = Math.floor(digit/10); 
 
    } 
 
    return result; 
 
}); 
 

 
document.write(res);

2

map遍历数组,分割每个元素,将其转换为数字然后添加它们,并返回最终数组。

function thing(arr) { 
    return arr.map(function (el) { 
    return el.split('').map(Number).reduce(function (p, c) { 
     return p + c; 
    }); 
    }); 
} 

thing(arr) // [ 2, 4, 6, 8 ] 

或者更多的东西干的,含ES6:

const add = (a, b) => a + b; 

function sumElements(arr) { 
    return arr.map(el => [...el].map(Number).reduce(add)); 
} 

DEMO

1

一个内胆采用ES6

var a = ['11', '22', '33', '44']; 

var result = a.map(e => e.split('').reduce((p, c) => +p + +c)) 

console.log(result); //[ 2, 4, 6, 8 ] 
1

这应该在所有的浏览器:

function wack(a){ 
    var r = []; 
    for(var i=0,l=a.length; i<l; i++){ 
    var s = a[i].split(''), t = 0; 
    for(var n=0,c=s.length; n<c; n++){ 
     t += +s[n]; 
    } 
    r.push(t); 
    } 
    return r; 
} 
var test = ['11', '22', '33', '44', '111']; 
console.log(wack(test));