任何人都可以幫助我。我如何在數組內總結數字
我已經創建了一個函數,其中有一個數組包含整數的字符串表示形式。
var a = ['11', '22', '33' ,'44'];
我想要做的是得到數組中每個元素的個別數字的總和。例如,包含'11'
的元素會給我2
(1 + 1),'22'
會給我4
(2 + 2),等等......所以我應該得到[2,4,6,8]
作爲最終輸出。我怎樣才能做到這一點。
謝謝
任何人都可以幫助我。我如何在數組內總結數字
我已經創建了一個函數,其中有一個數組包含整數的字符串表示形式。
var a = ['11', '22', '33' ,'44'];
我想要做的是得到數組中每個元素的個別數字的總和。例如,包含'11'
的元素會給我2
(1 + 1),'22'
會給我4
(2 + 2),等等......所以我應該得到[2,4,6,8]
作爲最終輸出。我怎樣才能做到這一點。
謝謝
我假設你意[2,4,6,8]作爲輸出,這將是您提供的每個元件的陣列中的數字的總和:
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]
對不起,我的意思是2,4,6,8。謝謝。 –
np,我編輯了這個問題,所以現在應該沒問題,希望有一些downvoters現在回來並且不要求你了 – JordanHendrix
我不知道這是你在問什麼,但我給它一個去。
var a = [11,22,33,44];
var b = [];
for(i in a){
b.push(a[i]*2);
}
//b == [22,44,66,88]
你的陣列是一個字符串,所以你可能要在功能包a[i]
。
另一種方法使用數學:
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);
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));
}
一個內膽採用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 ]
這應該在所有的瀏覽器:
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));
你是什麼意思「一個數字的總和」?它看起來像你所有乘以2. –
你卡在哪裏? –
我猜他的意思是輸出是[2,4,6,8],那是對的嗎? – JordanHendrix