【问题标题】:How can I do this using Reduce function? [closed]如何使用 Reduce 功能做到这一点? [关闭]
【发布时间】:2016-12-03 05:54:25
【问题描述】:

var y= '110001'.split("").reverse();
var sum = 0;
for (var i = 0; i < y.length; i++) {
  sum += (y[i] * Math.pow(2, i));
}
console.log(sum);

【问题讨论】:

    标签: javascript reduce


    【解决方案1】:

    这样做是最简单的

    console.log(Array.from('110001').reduce((prev, cur) =&gt; prev &lt;&lt; 1 | cur));

    &lt;&lt; 是左移运算符,这里基本上是乘以 2。

    Array.from(如果可用)优于split。在这种情况下,这无关紧要,但split 会因代理对字符(例如?)而失败,而Array.from 会正确处理它们。这也可以写成[...'110001'],结果是一样的。

    当然,你也可以直接说

    parseInt('110001', 2)
    

    【讨论】:

      【解决方案2】:

      检查这个sn-p

      var binary = '110001'.split("").reverse();
      
      var sum = binary.reduce(function(previous, current, index) {
        previous = previous + (current * Math.pow(2, index));
        return previous;
      }, 0);
      
      console.log(sum);

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2021-09-19
        • 2018-07-03
        • 2013-12-11
        • 2017-08-22
        • 1970-01-01
        • 2012-05-16
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        相关资源
        最近更新 更多