๐Ÿ“Ž ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ

tempยท2022๋…„ 9์›” 26์ผ
0

Method (JavaScript)

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

์œ ์šฉํ•œ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

javascript.info

MDN

์ฐธ์กฐ ๋ธ”๋กœ๊ทธ

Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜

  • new Array(arrayLength)
  • length์˜ ๊ฐ’๊ณผ ์ƒ๊ด€์—†์ด ๋นˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ฉฐ, ์ „๋‹ฌ๋œ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด 0์ด๋ผ๋ฉด ๋นˆ ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด([])๊ณผ ๋™์ผํ•˜๋‹ค.
  • ์ธ์ˆ˜๋ฅผ 2๊ฐœ ์ด์ƒ ์ „๋‹ฌํ•˜๋ฉด Array.of ๋ฉ”์„œ๋“œ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ฆ‰, ์ธ์ˆ˜๋“ค์„ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
  • new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœํ•˜์—ฌ๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

Array.of ๋ฉ”์†Œ๋“œ

  • ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
  • Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€์˜ ์ฐจ์ด์ ์€ ์ธ์ˆ˜๊ฐ€ 1๊ฐœ ์ผ ๋•Œ์—๋„ ํ•ด๋‹น ์š”์†Œ๋ฅผ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.
const a = Array.of(1, 2, 'abc', {}); // [1, 2, 'abc', {}]
const b = Array.of(10); // [10];
const c = new Array(10); // [], c.length = 10

Array.from ๋ฉ”์†Œ๋“œ

  • ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด(array-like objects) ๋˜๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ”(?)์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
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.from({length: n}, (_,i)=>i);

  • ๊ธธ์ด๊ฐ€ n๊ฐœ์ด๊ณ , ๊ฐ ์š”์†Œ๊ฐ’ 0๋ถ€ํ„ฐ 1์”ฉ ์ปค์ง€๋„๋ก ์ƒ์„ฑ

โ—๏ธ ํ™œ์šฉ

โ‘  1 ~ N ๊นŒ์ง€ ์ž์—ฐ์ˆ˜๋ฅผ ๋‚˜์—ดํ•œ ๋ฐฐ์—ด ์ƒ์„ฑ (๊ทœ์น™์ ์ธ ์ˆ˜ ๋‚˜์—ด)

// 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]

1๋ถ€ํ„ฐ 1,000,000๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๋ฐฐ์—ด์„ ๊ฐ๊ฐ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜์—ฌ ๋Œ€๋žต์ ์œผ๋กœ ๋น„๊ตํ•ด ๋ณด์•˜๋‹ค.

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]

โ‘ก ๋˜‘๊ฐ™์€ ์š”์†Œ๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด ์ƒ์„ฑ

Array.fill() ๋ฉ”์„œ๋“œ

: ์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๋กœ ๋ฐฐ์—ด์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค.

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]]

๋”ฐ๋ผ์„œ ๋นˆ ๋ฐฐ์—ด๋กœ ๋ฐฐ์—ด์„ ์ฑ„์šฐ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด Array.prototype.fill ๋ฉ”์„œ๋“œ ๋Œ€์‹  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

const a = [...new Array(5)].map(() => []); // [[], [], [], [], []]
a[3].push(1); // [[], [], [], [1], []]

const b = Array.from({length: 5}, () => []); // [[], [], [], [], []]
b[3].push(1); // [[], [], [], [1], []]

๐Ÿ“Œ ์ž„์˜์˜ ์ˆซ์ž N์„ ๊ฐ ์ž๋ฆฌ์ˆ˜๋ณ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

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);
}

.set()

const arr = [1,1,3,3,0,1,1]
const arr2 = [...new Set(arr)]
    
console.log(arr2)    // [ 1, 3, 0 ]

set ์€ ์ˆœ์„œ์— ์ƒ๊ด€ ์—†์ด, ์ค‘๋ณต๋œ ๊ฒƒ์„ ๋ฐฐ์—ด์— ๋‹ด์ง€ ์•Š๋Š”๋‹ค.

"Set ๊ฐ์ฒด๋Š” ์ž๋ฃŒํ˜•์— ๊ด€๊ณ„ ์—†์ด ์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด ์ฐธ์กฐ ๋ชจ๋‘ ์œ ์ผํ•œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." ๋ผ๋Š” ๊ฒƒ์ด mdn ๋ฌธ์„œ์˜ ํ‘œํ˜„์ด๋‹ค.
MDN

[...Array(n).keys()]?

Object.keys(obj)

Object.keys() ๋ฉ”์†Œ๋“œ๋Š” ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ์†์„ฑ ์ด๋ฆ„๋“ค์„ ์ผ๋ฐ˜์ ์ธ ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ์ˆœํšŒ๋˜๋Š” ์—ด๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

...Array(n)๊ฐ€ length ๊ฐ€ n์ธ ๊ฐ’์ด ๋นˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ฒŒ ๋˜๊ณ ,
๊ฑฐ๊ธฐ์— keys()์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด์˜จ ๊ฐ์ฒด์˜ key ๊ฐ’์„๋กœ ๋ฐฐ์—ด์„ ์ฑ„์šฐ๊ฒŒ ๋œ๋‹ค.

MDN

[...Array(n).values()]?

Object.values(obj)

Object.values() ๋ฉ”์†Œ๋“œ๋Š” ์ „๋‹ฌ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๋Š” (์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ) ์†์„ฑ์˜ ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฐ์—ด์€ for...in ๊ตฌ๋ฌธ๊ณผ ๋™์ผํ•œ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. (for in ๋ฐ˜๋ณต๋ฌธ์€ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ๋˜ํ•œ ์—ด๊ฑฐํ•œ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ
join() !!! split()์˜ ๋ฐ˜๋Œ€

Array.slice(begin [, end])
์–ด๋–ค ๋ฐฐ์—ด์˜ begin๋ถ€ํ„ฐ end๊นŒ์ง€(end ๋ฏธํฌํ•จ)์— ๋Œ€ํ•œ ์–•์€ ๋ณต์‚ฌ๋ณธ์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Array.reverse()
๋ฐฐ์—ด์˜ ์ˆœ์„œ ๋’ค์ง‘๊ธฐ
๋ฐฐ์—ด ์ž์ฒด๊ฐ€ ๋ณ€ํ™”๋จ

์ •์ˆ˜ ํŒ๋ณ„

  • Number.isInteger(num)
  • num % 1 === 0 ์—ฌ๋ถ€ ํ™•์ธ

ํด๋ž˜์Šค์—์„œ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ๋Œ€์ƒ ์ฐพ๊ธฐ



.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` )

๋งˆ์ง€๋ง‰ ์š”์†Œ๋ถ€ํ„ฐ ๊ฑฐ๊พธ๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜ ์ ์šฉ

์ˆซ์ž ๋ฐฐ์—ด์„ string ๋ฐฐ์—ด๋กœ ๋ฐ”๊พธ๊ธฐ

1. map์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฆฌํ„ด

const result = Array.map(student => student.score)

2. join()์œผ๋กœ string ์œผ๋กœ ๋ณ€ํ™˜

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)

sort์˜ ๋™์ž‘์›๋ฆฌ

if ๋ฌธ์„ {} ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ๋„์–ด์“ฐ๊ธฐ๋งŒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ!

if(one[i%5] === answer[i]) resultes[0]++;

const maxNumber = Math.max(...results)

profile
๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ์ •๋ฆฌ์ค‘...

0๊ฐœ์˜ ๋Œ“๊ธ€