如何使用Reduce功能执行此操作?

时间:2016-12-03 05:54:26

标签: javascript reduce

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);

2 个答案:

答案 0 :(得分:4)

这样做最简单

&#13;
&#13;
console.log(Array.from('110001').reduce((prev, cur) => prev << 1 | cur));
&#13;
&#13;
&#13;

<<是left-bitshift运算符,在这里基本上乘以2。

Array.from(如果可用)优于split。在这种情况下,它并不重要,但split会因代理对字符而失败,例如,Array.from会正确处理它们。这也可以写成[...'110001'],最终是同样的事情。

当然,你也可以说

parseInt('110001', 2)

答案 1 :(得分:1)

检查此代码段

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

希望有所帮助