我正在解决这个问题,而且看来我正处于最佳状态。
我的代码是执行一个不使用Math.max()
函数即可返回最大值的函数。
var arr = [42,13,34,8, -9, 3];
function max(array, selector) {
var val = array[0];
for (var i = 1; i < array.length; i++) {
if (selector == "Max") {
if (array[i] > val) {
val = array[i];
}
}
}
return val;
}
console.log(max([42,34,8,13,-9]))
答案 0 :(得分:3)
您可以使用reduce
函数:
function max(array) {
return array.reduce((prev, curr) => prev > curr ? prev : curr, undefined)
}
console.log(max([42,34,8,13,-9]))
console.log(max([-1, -50,-9]))
console.log(max([]))
答案 1 :(得分:0)
您可以检查并指定实际值。
function max(array) {
var val = array[0];
for (var i = 1; i < array.length; i++) {
if (array[i] > val) val = array[i];
}
return val;
}
console.log(max([42, 34, 8, 13, -9, 101]));
答案 2 :(得分:0)
我认为这是Array#reduce
的完美用例。如果您觉得有用,这是一个递归答案:
const max =
([x, ...xs], m) =>
x === undefined
? m
: max(xs, m > x ? m : x);
console.log(max([42,34,8,13,-9]));
console.log(max([]));
答案 3 :(得分:0)
这就是我所拥有的。我接触了很多人,他们帮助我解决了这个问题。谢谢大家! 这导致了我的下一个问题: 这如何变成寻找最小值?我是否只是将(<)替换为(>)并使用i--?如果不是,为什么不呢?
function max(arr) {
let maximum = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > maximum) {
maximum = arr[i];
}
}
return maximum;
}