2016-04-21 38 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));