任何人都可以帮助我。我如何在数组内总结数字
我已经创建了一个函数,其中有一个数组包含整数的字符串表示形式。
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