简单的数学javascript将所有数据与相同的变量相加

时间:2017-05-09 20:42:30

标签: javascript math

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。我尝试使用* =但失败了。

5 个答案:

答案 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'));

您有两个我认为应该相同的变量 - totalsumlah

您最大的问题是在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,然后使用*=将每个结果相乘。你必须返回结果。

&#13;
&#13;
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;
&#13;
&#13;