const a = Array.of(1, 2, 'abc', {}); // [1, 2, 'abc', {}]
const b = Array.of(10); // [10];
const c = new Array(10); // [], c.length = 10
์ดํฐ๋ฌ๋ธ(?)
์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด์ ์์ฑํ๋ค.const a = {length: 3, 0: 1, 1: 2, 2: 3}; // ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด
const b = Array.from(a); // [1, 2, 3]
const c = Array.from('abc'); // ['a', 'b', 'c']
const a = 'Hello World';
const b = Array.from(a, v => v.toLowerCase()); // ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
// Array ์์ฑ์ ํจ์
const a = [...new Array(10)].map((_, i) => i + 1); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// Array.from ๋ฉ์๋
const b= Array.from({length: 10}, (_, i) => i + 1); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
์ ์ฝ๋์์ new Array(10)์ ๋ฐ๋ก map์ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐ์ด ๋ด๋ถ์ Spread Operator๋ฅผ ์ฌ์ฉํ ์ด์ ๋ new Array(10)์ length ํ๋กํผํฐ ๊ฐ๋ง 10์ด๊ณ ์ค์ ๋ก ๋ด๋ถ์ ๋ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
const a = new Array(5).map((_, i) => i + 1); // []
const b = [...new Array(5)]; // [undefined, undefined, undefined, undefined, undefined]
const c = [...new Array(5)].map((_, i) => i + 1); // [1, 2, 3, 4, 5]
// Array.from ๋ฉ์๋์ length ํ๋กํผํฐ๋ง ๊ฐ์ง ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ฉด
// ํด๋น ๊ธธ์ด ๋งํผ์ undefined๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค.
const d = Array.from({length: 5}); // [undefined, undefined, undefined, undefined, undefined]
const e = Array.from({length: 5}, (_, i) => i + 1); // [1, 2, 3, 4, 5]
console.time('Array ์์ฑ์ ํจ์');
const a = [...new Array(1000000)].map((_, i) => i + 1);
console.timeEnd('Array ์์ฑ์ ํจ์');
console.time('Array.from ๋ฉ์๋');
const b = Array.from({length: 1000000}, (_, i) => i + 1);
console.timeEnd('Array.from ๋ฉ์๋');
// ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ ์ธก์
// Array ์์ฑ์ ํจ์: 24.26708984375 ms
// Array.from ๋ฉ์๋: 65.093017578125 ms
๐ ๋ค์ํ ๊ท์น์ ์ธ ์ ๋ง๋ค๊ธฐ
const a = [...Array(5)].map((_, i) => 2 * i + 1); // [1, 3, 5, 7, 9] const b = [...Array(5)].map((_, i) => 2 * i + 2); // [2, 4, 6, 8, 10] const c = [...Array(5)].map((_, i) => i * i); // [0, 1, 4, 9, 16] const d = [...Array(5)].map((_, i) => 1 << i); // [1, 2, 4, 8, 16] const e = [...Array(5)].map((_, i) => i % 2); // [0, 1, 0, 1, 0]
: ์ ๋ฌ๋ฐ์ ์ธ์๋ก ๋ฐฐ์ด์ ์ฑ์ธ ์ ์๋ค.
const a = new Array(5).fill(0); // [0, 0, 0, 0, 0]
const b = [1, 2, 3, 4, 5].fill(0); // [0, 0, 0, 0, 0]
const a = new Array(5).fill([]); // [[], [], [], [], []]
a[3].push(1); // [[1], [1], [1], [1], [1]]
const a = [...new Array(5)].map(() => []); // [[], [], [], [], []]
a[3].push(1); // [[], [], [], [1], []]
const b = Array.from({length: 5}, () => []); // [[], [], [], [], []]
b[3].push(1); // [[], [], [], [1], []]
function splitNumber(N) {
const nums = N.toString().split("").map(Number).sort((a,b)=>b-a);
return nums.join("")
}
function devideNumber(N) {
const nums = [];
do {
nums.push(N%10);
N = Math.floor(N/10);
} while(N>0)
return nums.sort((a,b)=>b-a).join("");
}
function main(n) {
let splitEff = 0;
let devideEff = 0;
for(i=0;i<100;i++) {
const n = Math.round(Math.random()*1000000000000000);
const t1 = performance.now();
splitNumber(n);
const t2 = performance.now();
splitEff += t2-t1;
}
for(i=0;i<100;i++) {
const n = Math.round(Math.random()*1000000000000000);
const t1 = performance.now();
devideNumber(n);
const t2 = performance.now();
devideEff += t2-t1;
}
console.log("splitNumber: " + splitEff / 100);
console.log("devideNumber: " + devideEff / 100);
}
const arr = [1,1,3,3,0,1,1]
const arr2 = [...new Set(arr)]
console.log(arr2) // [ 1, 3, 0 ]
set ์ ์์์ ์๊ด ์์ด, ์ค๋ณต๋ ๊ฒ์ ๋ฐฐ์ด์ ๋ด์ง ์๋๋ค.
"Set ๊ฐ์ฒด๋ ์๋ฃํ์ ๊ด๊ณ ์์ด ์์ ๊ฐ๊ณผ ๊ฐ์ฒด ์ฐธ์กฐ ๋ชจ๋ ์ ์ผํ ๊ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค." ๋ผ๋ ๊ฒ์ด mdn ๋ฌธ์์ ํํ์ด๋ค.
MDN
Object.keys(obj)
Object.keys() ๋ฉ์๋๋ ์ฃผ์ด์ง ๊ฐ์ฒด์ ์์ฑ ์ด๋ฆ๋ค์ ์ผ๋ฐ์ ์ธ ๋ฐ๋ณต๋ฌธ๊ณผ ๋์ผํ ์์๋ก ์ํ๋๋ ์ด๊ฑฐํ ์ ์๋ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
...Array(n)๊ฐ length ๊ฐ n์ธ ๊ฐ์ด ๋น ๋ฐฐ์ด์ ๋ง๋ค๊ฒ ๋๊ณ ,
๊ฑฐ๊ธฐ์ keys()์ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์จ ๊ฐ์ฒด์ key ๊ฐ์๋ก ๋ฐฐ์ด์ ์ฑ์ฐ๊ฒ ๋๋ค.
Object.values(obj)
Object.values() ๋ฉ์๋๋ ์ ๋ฌ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๋ (์ด๊ฑฐ ๊ฐ๋ฅํ) ์์ฑ์ ๊ฐ๋ค๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ฆฌํดํฉ๋๋ค. ์ด ๋ฐฐ์ด์ for...in ๊ตฌ๋ฌธ๊ณผ ๋์ผํ ์์๋ฅผ ๊ฐ์ง๋๋ค. (for in ๋ฐ๋ณต๋ฌธ์ ํ๋กํ ํ์ ์ฒด์ธ ๋ํ ์ด๊ฑฐํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.)
๋ฐฐ์ด ํฉ์น๊ธฐ
join() !!! split()์ ๋ฐ๋
Array.slice(begin [, end])
์ด๋ค ๋ฐฐ์ด์ begin๋ถํฐ end๊น์ง(end ๋ฏธํฌํจ)์ ๋ํ ์์ ๋ณต์ฌ๋ณธ์ ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๋ก ๋ฐํํฉ๋๋ค. ์๋ณธ ๋ฐฐ์ด์ ๋ฐ๋์ง ์์ต๋๋ค.
Array.reverse()
๋ฐฐ์ด์ ์์ ๋ค์ง๊ธฐ
๋ฐฐ์ด ์์ฒด๊ฐ ๋ณํ๋จ
.find((value) => ์กฐ๊ฑด)
์ฝ๋ฐฑํจ์๊ฐ true ์ธ ๊ฐ์ ์ฐพ์ผ๋ฉด ๋ฐ๋ก ๊ทธ ๊ฐ ๋ฐํ, ๋
.filter((value) => ์กฐ๊ฑด)
์ฝ๋ฐฑํจ์๊ฐ true ์ธ ๊ฐ ๋ชจ๋ ๋ฐํ
(๋ฐฐ์ด or ๊ฐ์ฒด).map((value) => ์กฐ๊ฑด)
ํจ์์กฐ๊ฑด๋๋ก ์ ๋ฐฐ์ด(๊ฐ์ฒด)์ ๊ฐ์ ๊ฐ๊ณต์ํจ ์๋ก์ด ๋ฐฐ์ด(๊ฐ์ฒด) ๋ฐํ
.some(() => ์กฐ๊ฑด)
์กฐ๊ฑด์ ๋ง๋ ๋์์ด ์๋์ง ์๋์ง ํ์ธํ์ฌ ๋ฆฌํด
ํ๋๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑ๋๋ ๊ฐ์ด ์๋ค๋ฉด true ๋ฆฌํด
๋น๋ฐฐ์ด์ผ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด false
.every(() => ์กฐ๊ฑด)
๋ฐฐ์ด์ ๋ชจ๋ ๋์์ด ์กฐ๊ฑด์ ๋ง์กฑํด์ผ true ๋ฆฌํด
๋น๋ฐฐ์ด์ผ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด true
!๋ฅผ ์์ ๋ถ์ผ ๊ฒฝ์ฐ true๋ผ๋ฉด false ๋ฆฌํด, false๋ผ๋ฉด true ๋ฆฌํด
.reduce((prev, curr) => {
return prev + curr.score;
}, `0: initialValue` )
.reduce((prev, curr) => prev + curr.score, `0: initialValue` );
์ฝ๋ฐฑ์์ ๋ฆฌํด๋๋ ๊ฐ์ ๋์ ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํด!
๋ฆฌํด ๊ฐ์ ์ ์ํด์ฃผ์ด์ผ ํจ
๋ฆฌํดํ๋ ๊ฐ๋ค์ ์์ฐจ์ ์ผ๋ก prev ์ผ๋ก ์ ๋ฌ๋จ
return prev + curr.score๋ก ํ๊ฒ ๋๋ฉด ๋์ ๋๋ ๊ฐ์ด prev๋ก ์ ๋ฌ๋จ
.reduceRight((prev, curr) => {
return prev + curr.score;
}, `0: initialValue` )
๋ง์ง๋ง ์์๋ถํฐ ๊ฑฐ๊พธ๋ก ์ฝ๋ฐฑํจ์ ์ ์ฉ
const result = Array.map(student => student.score)
const result = Array
.map(student => student.score)
.filter(score => score >= 50)
.join();
์์ ์์๋๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
const result = students.map(student => student.score)
.sort((a,b) => a-b)
.join(); // sort๋ก ์ ํ๋ ๊ฐ string์ผ๋ก ๋ณํsort์๋ ์ด์ ๊ฐ๊ณผ ํ์ฌ๊ฐ์ด ์ ๋ฌ๋๋๋ฐ, ๋ง์ฝ ์์๋ฅผ ๋ฆฌํดํ๊ฒ ๋๋ฉด ์ฒซ๋ฒ์งธ๊ฐ ๋๋ฒ์งธ๊ฐ๋ณด๋ค ์๋ค๊ณ ๊ฐ์ฃผ๋์ด์ ธ์ ์ ๋ ฌ๋๋ ๋ฉ์ปค๋์ฆ
ํฐ ์์๋๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด
.sort((a,b) => b-a)
if(one[i%5] === answer[i]) resultes[0]++;
const maxNumber = Math.max(...results)