function mathx(n){
var total
for(var i = 0; i<n.length; i++){
var sumlah = n[i] * 2;
}
}
mathx('123')
我将乘以变量sumlah中的所有数据。在代码片段中有3个数字将乘以数字2,如果执行此代码,它将产生var sumlah = 1 * 2,var sumlah = 2 * 2和var sumlah = 3 * 3. sumlah的结果2,4,6。我希望将所有数据乘以sumlah。我尝试使用* =但失败了。
答案 0 :(得分:1)
这个怎么样:
function mathx(n, multiple) {
var digits = n.split('');
return digits.map(function (x) {
return Number.parseInt(x) * Number.parseInt(multiple);
}).reduce(function (x, y) {
return x * y;
});
}
console.log( mathx('123', 2) )
答案 1 :(得分:1)
我建议使用map:
function mathx(xs) {
return xs.map((x) => x*2);
}
mathx([1,2,3])
那只是做的工作。 map
接受一个函数,结果替换列表中的每个值。
此外,请勿使用字符串'123'
,请使用列表:[1,2,3]
。
答案 2 :(得分:1)
使用map和reduce
可能会更加精彩function mathx(n) {
return n.split('').map(Number).reduce(function(acc, val) {
return acc + (val * 2);
}, 0);
}
alert(mathx('123'));
JSFiddle:click here
答案 3 :(得分:0)
我相信这可以满足您的需求:
function mathx(n) {
var sumlah = 1;
for (var i = 0; i < n.length; i++) {
sumlah *= n[i] * 2;
}
return sumlah;
}
alert(mathx('123'));
您有两个我认为应该相同的变量 - total
和sumlah
。
您最大的问题是在sumlah
循环内声明了for
。通过在循环之外声明它,它具有循环外的范围。
您希望使用n[i] * 2
计算当前数字的两倍。然后,将其与sumlah
相乘累加器sumlah *= n[i] * 2;
。完成后,请使用return sumlah;
返回。
但是,最好不要使用字符串来存储数字数据。请尝试使用数组:[1, 2, 3]
。然后你可以这样做:
function mathx(n) {
var sumlah = 1;
for (var i = 0; i < n.length; i++) {
sumlah *= n[i] * 2;
}
return sumlah;
}
alert(mathx([1, 2, 3]));
这几乎是一样的,但对其他人有意义。
答案 4 :(得分:0)
您需要将sumlah
初始化为1
,然后使用*=
将每个结果相乘。你必须返回结果。
function mathx(n) {
var sumlah = 1;
for (var i = 0; i < n.length; i++) {
sumlah *= n[i] * 2;
}
return sumlah;
}
console.log(mathx('123'));
&#13;