我对JavaScript相对较新,并且正在努力使ES6语法特别是与if语句联系起来。我可以创建简单的ES6函数,例如:
function test(a,c) {
return a+c;
}
[3,8,-4,3].reduce(test);
但是,如果要添加if语句,则无法使ES6语法正常工作-例如:
function maxValue(a,c) {
if (c >= a) { a == c }
}
[3,8,-4,3].reduce(maxValue);
我知道我可以使用Math方法通过以下方式获得结果:
var array = [267, 306, 108];
var largest = Math.max.apply(Math, array); // returns 306
但是我想知道如何正确使用新的ES6语法。我试图在过滤器中添加if语句,reduce,map和forEach以达到数组中的最大值并遇到困难。
非常感谢任何帮助,建议或与初学者资料的链接。
答案 0 :(得分:5)
您可以使用条件运算符检查更大的数字。
const max = (a, b) => a > b ? a : b;
console.log([3, 8, -4, 3].reduce(max));
如果数组只有一个元素,则此方法无效。在这种情况下,您可以使用一个非常小的数字作为起始值,并对照给定的值进行检查。
const max = (a, b) => a > b ? a : b;
console.log([3].reduce(max, -Infinity));
在某种程度上,您可以不进行迭代,而将Math.max
与spread syntax ...
结合使用,它们将数组的元素作为调用函数的参数。
console.log(Math.max(...[3, 8, -4, 3]));
答案 1 :(得分:5)
要使代码正常工作,您需要进行2次更改
undefined
,因此计算不正确==
用于比较,要进行分配,您需要使用=
function maxValue(a,c) {
if (c >= a) { a = c }
return a;
}
console.log([3,8,-4,3].reduce(maxValue));
答案 2 :(得分:5)
在ES6中,您可以使用解构语法。
Math.max(...array)
等效于Math.max.apply(Math, array)
的ES6。
var array = [267, 306, 108];
var largest = Math.max(...array);
console.log(largest)
答案 3 :(得分:2)
另一个选择-将spread operator与Math.max
一起使用。传播运算符使我们能够扩展数组的内容以作为单独的参数传递。例如:
Math.max(...[1, 10, 2]);
等效于:
Math.max(1, 10, 2);
这是一个演示:
const myArr = [-5, 0, 267, 306, 108, 57, -2352];
console.log(Math.max(...myArr));