首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >superPower函数从ES5到ES6

superPower函数从ES5到ES6
EN

Stack Overflow用户
提问于 2017-04-08 05:08:50
回答 4查看 104关注 0票数 1

我有一个名为superPower的函数,它接受一个数字数组,并返回一个数字。这个数字是通过将每个元素乘以10到数组中索引位置的幂来创建的,然后将每个元素相加在一起。

这是我需要重构为ES5的ES6版本

代码语言:javascript
复制
 ArrayFunctions.superPower = function(array){
 return array.reduce(function(sum, number, index){
 return sum + (number * (Math.pow(10, index)));
 });
};

这是我迄今尝试过的,但没有用:

代码语言:javascript
复制
static superPower (array) {
  return array.reduce(((sum, number, index) => sum + number + index ) {
  return (sum + (number => number ** (10, index) ));
  });
}

查找下面的完整代码:

代码语言:javascript
复制
class ArrayFunctions {
  constructor () {
  }
  static printSpecial (array) {
    return array.join(" --- ");
  }
  static doubleArray (array) {
      return array.map(number => number * 2);
  }
  static superPower (array) {
  //   return array.reduce( ((sum, number, index) => sum + number + index); {
  //     return sum + (number * (Math.pow(10, index)));
  // });
  }
}

// Method to refactor 

ArrayFunctions.superPower = function(array){
  return array.reduce(function(sum, number, index){
    return sum + (number * (Math.pow(10, index)));
  });
};

// Here I am testing how to refactor it
// ArrayFunctions.superPower = function(array){
// return array.reduce(((sum, number, index) => sum + number + index ) {
//   return (sum + (number => number ** (10, index) ));
// });
// };

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-08 05:18:43

就像:

代码语言:javascript
复制
ArrayFunctions.superPower = function(array){
 return array.reduce((sum, number, index) => {
   return sum+number*Math.pow(10, index);
 });
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-08 05:38:47

我想你要找的是:

代码语言:javascript
复制
ArrayFunctions = {};
ArrayFunctions.superPower = (array => array.reduce(
  (sum, number, index) => sum + number * 10 ** index), 0)
);

console.log(ArrayFunctions.superPower([1,2,3]));

这在我当前的Safari中不会运行,因为它不支持指数运算符**,我需要使用:

代码语言:javascript
复制
ArrayFunctions = {};
ArrayFunctions.superPower = (array => array.reduce(
  (sum, number, index) => sum + number * Math.pow(10, index), 0)
);

console.log(ArrayFunctions.superPower([1,2,3]));

在类声明中使用一次返回是必需的,因为不能使用箭头函数来定义静态方法:

代码语言:javascript
复制
class ArrayFunctions {
  constructor(){}

  static superPower (array) {
    return array.reduce((sum, number, index) => sum + number * Math.pow(10, index),0);
  }
}

console.log(ArrayFunctions.superPower([1,2,3]));

但是,如果要简单地使用类语法来创建对象的方法,那么很难从以下方面证明它是正确的:

代码语言:javascript
复制
var arrayFunctions = {
  superPower : (array) => array.reduce((sum, number, index) => sum + number * Math.pow(10, index), 0)
};
    
console.log(arrayFunctions.superPower([1,2,3]));

票数 0
EN

Stack Overflow用户

发布于 2017-04-08 05:45:24

我将以下代码添加到我的类主体中,它运行得很好:

代码语言:javascript
复制
 return array.reduce((sum, number, index) => {
 return sum+number*Math.pow(10, index);

现在是这样的:

代码语言:javascript
复制
class ArrayFunctions {
 constructor () {
 }
  static printSpecial (array) {
   return array.join(" --- ");
  }
  static doubleArray (array) {
   return array.map(number => number * 2);
  }
  static superPower (array) {
   return array.reduce((sum, number, index) => {
   return sum+number*Math.pow(10, index);
 });
 }
 }

 module.exports = ArrayFunctions;

谢谢你@PHPglue

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43290414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档