我有一个名为superPower的函数,它接受一个数字数组,并返回一个数字。这个数字是通过将每个元素乘以10得到它在数组中的索引位置的幂来创建的,然后将每个元素添加到一起。
这是我需要重构为ES6的ES5版本
ArrayFunctions.superPower = function(array){
return array.reduce(function(sum, number, index){
return sum + (number * (Math.pow(10, index)));
});
};
这是我到目前为止所尝试的,但它不起作用:
static superPower (array) {
return array.reduce(((sum, number, index) => sum + number + index ) {
return (sum + (number => number ** (10, index) ));
});
}
查看完整代码:
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) ));
// });
// };
答案 0 :(得分:1)
就像:
if(XORO == 2 || XORO == 4 || XORO == 6...
答案 1 :(得分:0)
我认为您正在寻找的是:
ArrayFunctions = {};
ArrayFunctions.superPower = (array => array.reduce(
(sum, number, index) => sum + number * 10 ** index), 0)
);
console.log(ArrayFunctions.superPower([1,2,3]));

这不会在我当前的Safari中运行,因为它不支持取幂运算符**
,我需要使用:
ArrayFunctions = {};
ArrayFunctions.superPower = (array => array.reduce(
(sum, number, index) => sum + number * Math.pow(10, index), 0)
);
console.log(ArrayFunctions.superPower([1,2,3]));

在类声明中使用需要返回一个,因为您不能使用箭头函数来定义静态方法:
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]));

但是,如果只使用类语法来创建对象的方法,那么很难证明它的合理性:
var arrayFunctions = {
superPower : (array) => array.reduce((sum, number, index) => sum + number * Math.pow(10, index), 0)
};
console.log(arrayFunctions.superPower([1,2,3]));

答案 2 :(得分:0)
我将以下代码添加到我的类体中并且它完美地运行了:
return array.reduce((sum, number, index) => {
return sum+number*Math.pow(10, index);
现在是这样的:
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
答案 3 :(得分:0)
永远不要仅使用class
static
函数,使用对象文字! (或者只使用命名导出,如果您想默认导出模块对象)
您的代码应该成为
const ArrayFunctions = {
printSpecial(array) {
return array.join(" --- ");
}
doubleArray(array) {
return array.map(number => number * 2);
}
superPower(array) {
return array.reduce((sum, number, index) =>
sum + number * 10 ** index;
);
}
};
请注意,您还可以通过reduceRight
而不是reduce
来提高代码的效率,并通过传递0
来提高可靠性,以便函数返回0
而不是抛出异常:
return array.reduceRight((acc, number) => number + 10 * acc, 0);