1๏ธโฃ Math ๋ฉ์๋ ์ฌ์ฉ
[Javascript] Math ๋ฉ์๋ (+์์ฑ)
๊ทธ๋ฌ๋ ๋จ์ํ Math.max()๋ Math.min()์ ์ธ์๋ก ์ซ์ ๊ฐ์ ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋ฐฐ์ด์ ์ต๋๊ฐ · ์ต์๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ์ด ์ด๋ ต๋ค
* ๋ฐฐ์ด ๋ด์ ๋น๊ต ๋ถ๊ฐ๋ฅํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ด NaN๋ก ๋์ค๊ฒ ๋๋ค.
* ๋งค๊ฐ๋ณ์๊ฐ ์๋ต๋ ๊ฒฝ์ฐ -Infinity๋ฅผ ๋ฐํํ๋ค.
** ํฐ ๋ฐฐ์ด (~10^7 elements)์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, RangeError : Maximum call stack size exceeded ์ค๋ฅ๊ฐ ๋๊ฒ ๋๋ค.
1๏ธโฃ-1๏ธโฃ spread ์ฐ์ฐ์ ์ฌ์ฉ
spread ์ฐ์ฐ์๋ ๋ฐฐ์ด์ ์์๋ค์ ๋ถํดํ ์ ์๋ค - ํผ์น ์ ์๋ค.
โก๏ธ Math ๋ฉ์๋์ ์ธ์๋ก ์ฌ์ฉ๊ฐ๋ฅ
*ECMAScript 6 ์ด์ ์ผ ๊ฒฝ์ฐ spread(...)์ฐ์ฐ์๋ฅผ ์ง์ํ์ง ์๋๋ค.
var arr = [3, 1, 2, 5, 4];
var maxValue = Math.max(...arr); //maxValue : 5
var minValue = Math.min(...arr); //minValue : 1
1๏ธโฃ-2๏ธโฃ Function.prototype.apply() ์ฌ์ฉ
apply ํจ์๋ฅผ ์ฌ์ฉํ์ฌ
์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ null (this์ ๋๊ฒจ์ฃผ๋ ๊ฐ์ฒด), ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ๋ฐฐ์ด์ ์ ๋ฌํ๋ฉด ๋ฐฐ์ด์ ์ต๋๊ฐ์ ์ฐพ์ ์ ์๋ค.
๋๋ณด๊ธฐ
function.apply(thisArg, [argsArray])
โ [argsArray] ๋ฐฐ์ด์ ์์ ๊ฐ๋ค์ ๊ฐ์ ธ์จ๋ค
โก ๊ฐ์ ธ์จ ์์์ ๊ฐ๋ค์ thisArg๊ฐ ๊ฐ๋ฅดํค๋ function ํจ์์ ์ธ์๋ก ๋ฐ์ ์คํ์ํจ๋ค
์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ฅผ null๋ก ์ ๋ฌํ๋ฉด context๋ window ๊ฐ์ฒด๊ฐ ๋๋ค.
โก๏ธ ๋ ๋ฒ์งธ ์ธ์์ ๋ฐฐ์ด์ ๊ฐ์ ์์๋๋ก ํธ์ถํ ๋ฉ์๋์ ์ธ์๋ก ๋ณด๋ด ์คํํ๋ค.
var arr = [3, 1, 2, 5, 4];
var maxValue = Math.max.apply(null, arr); //maxValue : 5
var minValue = Math.min.apply(null, arr); //minValue : 1
2๏ธโฃ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
//์ต๋๊ฐ
function findMaxValue(arr) {
let max = arr[0];
for (let i of arr) {
if (i > max)
max = i;
}
return max;
}
//์ต์๊ฐ
function findMinValue(arr) {
let min = arr[0];
for (let i of arr) {
if (i < min)
min = i;
}
return min;
}
3๏ธโฃ sort ํจ์ ์ฌ์ฉ
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๋ ฌ์ ํ ๊ฒฝ์ฐ ๋ฌธ์์ด ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
[Javascript] ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ (์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์, ๋ฌธ์์ด, ๊ฐ์ฒด)
var arr = [3, 1, 2, 5, 4];
var max = arr.slice(0).sort((a, b) => b - a)[0];
var min = arr.slice(0).sort((a, b) => a - b)[0];
4๏ธโฃ reduce ํจ์ ์ฌ์ฉ
var arr = [3, 1, 2, 5, 4];
//์ต๋๊ฐ
var max = array.reduce( function (pre, cur) {
return pre > cur ? pre : cur;
});
//์ต์๊ฐ
var min = array.reduce( function (pre, cur) {
return pre > cur ? cur : pre;
});