Skip to content

Commit cd809ea

Browse files
change implementation of min and max. No longer using apply which causes stack error, replaced with simple for loop
1 parent ed20ca3 commit cd809ea

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/math/calculation.js

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -498,11 +498,19 @@ p5.prototype.map = function(n, start1, stop1, start2, stop2, withinBounds) {
498498
* @param {Number[]} nums Numbers to compare
499499
* @return {Number}
500500
*/
501-
p5.prototype.max = function(...args) {
501+
p5.prototype.max = function (...args) {
502+
const findMax = arr => {
503+
let max = -Infinity;
504+
for (let x of arr) {
505+
max = x > max ? x : max;
506+
}
507+
return max;
508+
};
509+
502510
if (args[0] instanceof Array) {
503-
return Math.max.apply(null, args[0]);
511+
return findMax(args[0]);
504512
} else {
505-
return Math.max.apply(null, args);
513+
return findMax(args);
506514
}
507515
};
508516

@@ -546,11 +554,19 @@ p5.prototype.max = function(...args) {
546554
* @param {Number[]} nums Numbers to compare
547555
* @return {Number}
548556
*/
549-
p5.prototype.min = function(...args) {
557+
p5.prototype.min = function (...args) {
558+
const findMin = arr => {
559+
let min = Infinity;
560+
for (let x of arr) {
561+
min = x < min ? x : min;
562+
}
563+
return min;
564+
};
565+
550566
if (args[0] instanceof Array) {
551-
return Math.min.apply(null, args[0]);
567+
return findMin(args[0]);
552568
} else {
553-
return Math.min.apply(null, args);
569+
return findMin(args);
554570
}
555571
};
556572

0 commit comments

Comments
 (0)