potatos
𝕝𝕒𝕦𝕣𝕦𝕀
potatos
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • Daily
    • Study
      • CS
      • Network
      • Windows
      • Linux
      • HTML & CSS
      • JavaScript
      • React
      • vue.js
      • Flutter
      • DataBase
      • Elastic Se..
      • Log
      • Coding Tes..
    • Work
      • PC
      • Mobile
      • JPGIF

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

  • notice

인기 κΈ€

νƒœκ·Έ

  • Windows
  • 수직 μ •λ ¬
  • HTML
  • JavaScript
  • μžλ°”μŠ€ν¬λ¦½νŠΈ
  • μ…€λ ‰ν„°
  • CSS
  • Linux
  • MySQL
  • μœˆλ„μš°

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
potatos

𝕝𝕒𝕦𝕣𝕦𝕀

[JavaScript] λ°°μ—΄
Study/JavaScript

[JavaScript] λ°°μ—΄

2022. 4. 29. 23:35

λ°°μ—΄

λ°°μ—΄μ΄λž€, 같은 μžλ£Œλ“€μ„ λ‹΄λŠ” 자료 ꡬ쑰 쀑 ν•˜λ‚˜μ΄λ‹€. λ³€μˆ˜μ— μ—¬λŸ¬ 개의 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜μ—¬ μ €μž₯ν•΄ 놓은 μƒνƒœμ΄λ©°, ν•˜λ‚˜μ˜ λ°°μ—΄μ—λŠ” λ™μΌν•œ μžλ£Œν˜•μ„ λ‚˜μ—΄ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

1μ°¨ λ°°μ—΄

λ°°μ—΄μ˜ ν•„μš”μ„±

ν•™κΈ‰ μ„±μ ν‘œλ₯Ό 보고 각 ν•™μƒλ³„λ‘œ 총점과 평균을 κ΅¬ν•΄μ•Όν•œλ‹€κ³  κ°€μ •ν–ˆμ„ λ•Œ, μ„±μ ν‘œκ°€ μ•„λž˜μ™€ κ°™λ‹€λ©΄ 3λͺ…μ”© 3κ³Όλͺ©μ΄λ―€λ‘œ 총 9개의 λ³€μˆ˜κ°€ ν•„μš”ν•  것이닀. λ§Œμ•½, 30λͺ…μ˜ 학생에 λŒ€ν•œ 20κ³Όλͺ©μ— λŒ€ν•œ 점수라고 κ°€μ •ν•œλ‹€λ©΄ μƒμ„±ν•΄μ•Όν•˜λŠ” λ³€μˆ˜κ°€ 더 μ¦κ°€ν•˜λ―€λ‘œ ν”„λ‘œκ·Έλž¨μ€ μ’€ 더 λ³΅μž‘ν•΄μ§€κ²Œ λœλ‹€.
배열은 μ΄λŸ¬ν•œ 경우λ₯Ό ν•΄μ†Œν•˜κΈ° μœ„ν•œ JavaScript 자료 ꡬ쑰 μ’…λ₯˜ 쀑 ν•˜λ‚˜λ‘œ λ³€μˆ˜μ— μ—¬λŸ¬ 개의 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜μ—¬ μ €μž₯ν•΄ 놓은 μƒνƒœλ₯Ό λ§ν•œλ‹€.
이름 κ΅­μ–΄ μ˜μ–΄ μˆ˜ν•™
철수 92 81 77
영희 72 95 98
민혁 80 86 84
var kor1 = 92;
var kor2 = 71;
var kor3 = 80;
// ... μƒλž΅ ...
var math2 = 84;
var math3 = 98;

λ°°μ—΄ 생성

1. λ°°μ—΄μ˜ μ„ μ–Έ

JavaScriptλŠ” λ³€μˆ˜μ˜ νŠΉμ„±μ΄ 값이 할당될 λ•Œ κ²°μ •λ˜κΈ° λ•Œλ¬Έμ— 선언은 일반 λ³€μˆ˜μ™€ λ™μΌν•˜λ©°, ν• λ‹Ήν•˜κΈ° μ „κΉŒμ§€λŠ” 숫자, λ¬Έμžμ—΄, λ°°μ—΄ λ“±μ˜ ꡬ뢄이 μ—†λ‹€.
let myArr;

2. λ°°μ—΄μ˜ ν• λ‹Ή

λŒ€κ΄„ν˜Έ([]) μ•ˆμ— 포함할 값듀을 데이터 νƒ€μž…μ˜ ꡬ뢄 없이 콀마(,)둜 κ΅¬λΆ„ν•˜μ—¬ λ‚˜μ—΄ν•œλ‹€. μ„ μ–Έκ³Ό 할당이 λ‚˜λˆ„μ–΄μ§„ 경우, const둜 μ„ μ–Έν•  수 μ—†λ‹€. 
myArr = [1, 2, 3.14, true, false, "hello", "world"];

3. μ„ μ–Έκ³Ό ν• λ‹Ήμ˜ 톡합 (ꢌμž₯)

μ„ μ–Έκ³Ό 할당을 ν•œ λ²ˆμ— ν•˜λŠ” 방법이며, 이 λ°©λ²•μ˜ μ‚¬μš©μ„ κ°€μž₯ ꢌμž₯ν•œλ‹€.
let myArr = [1, 2, 3, 5, 7];

4. Array 클래슀λ₯Ό μ‚¬μš©ν•œ ν• λ‹Ή

new Array(...) ν˜•μ‹μœΌλ‘œ μƒμ„±ν•˜λ©°, ꢌμž₯ν•˜μ§€ μ•ŠλŠ” 방법이닀. 배열을 생성할 λ•Œ () μ•ˆμ— 숫자 κ°’ ν•˜λ‚˜λ§Œ λͺ…μ‹œλ˜λŠ” 경우, 숫자 κ°’λ§ŒνΌμ˜ 빈 칸을 κ°–λŠ” 배열이 μƒμ„±λ˜λ©°, κ·Έλ ‡κ²Œ μƒμ„±λœ λ°°μ—΄μ˜ 각 칸은 λͺ¨λ‘ μ •μ˜λ˜μ§€ μ•Šμ€ undefined 값이 ν• λ‹Ήλœλ‹€.
let newArr1 = new Array("hello", "world", 1, 2, 3, true, false);

// () μ•ˆμ— 숫자 κ°’ ν•˜λ‚˜λ§Œ λͺ…μ‹œλ˜λŠ” 경우
let newArr2 = new Array(50);	// 50칸의 빈 λ°°μ—΄ 생성

λ°°μ—΄μ˜ μ›μ†Œμ— μ ‘κ·Ό

λ°°μ—΄μ˜ 각 μ›μ†ŒλŠ” 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 일련번호λ₯Ό λΆ€μ—¬λ°›λŠ”λ°, 이λ₯Ό λ°°μ—΄μ˜ 인덱슀라고 ν•œλ‹€. λ°°μ—΄μ˜ μ›μ†Œμ— μ ‘κ·Όν•  λ•Œμ—λŠ” 인덱슀 번호λ₯Ό ν™œμš©ν•˜μ—¬ μ ‘κ·Όν•΄μ•Ό ν•˜λ©°, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ›μ†Œμ˜ 값을 좜λ ₯ν•˜κ³ μž ν•  κ²½μš°μ—λŠ” μ •μ˜λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— undefined으둜 좜λ ₯되게 λœλ‹€.
let myArr = [1, 2, 3.14, true, false, "hello", "world"];
console.log(myArr[0]);
console.log(myArr[2]);
console.log(myArr[4]);
console.log(myArr[6]);


/** κ²°κ³Ό **/
1
3.14
false
world

λ°°μ—΄μ˜ 크기

배열이름.length λŠ” λ°°μ—΄μ˜ μΉΈ 수λ₯Ό λ°˜ν™˜ν•˜λ©°, λ°°μ—΄μ˜ μΈλ±μŠ€λŠ” 항상 0λΆ€ν„° 크기-1κΉŒμ§€ 1μ”© μ¦κ°€ν•˜λ©° μ‘΄μž¬ν•œλ‹€.
/** 5칸으둜 κ΅¬μ„±λœ 빈 λ°°μ—΄ 생성 **/
const  myArr = new Array(5);
console.log(myArr);


/** λ°°μ—΄μ˜ 길이 **/
const len = myArr.length;
console.log("λ°°μ—΄μ˜ κΈΈμ΄λŠ” %d", len);



/** κ²°κ³Ό **/
[ <5 empty items> ]
λ°°μ—΄μ˜ κΈΈμ΄λŠ” 5

λ°˜λ³΅λ¬Έμ„ ν†΅ν•œ ν™œμš©

λ°°μ—΄μ˜ μΈλ±μŠ€λŠ” 0λΆ€ν„° (배열이름.length-1)둜, 순차적으둜 μ¦κ°€ν•œλ‹€λŠ” νŠΉμ„±μ΄ μžˆλ‹€. 반볡문의 μ΄ˆκΈ°μ‹μ„ 0으둜 ν• λ‹Ήν•˜κ³ , 쑰건식은 λ°°μ—΄μ˜ 길이보닀 μž‘μ€ λ™μ•ˆμ— 증감식을 1μ”© μ¦κ°€λ‘œ μ„€μ •ν•œ 반볡문과 ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.
/** μ΅œλŒ€ 값을 κ΅¬ν•˜λŠ” 예제 **/

// μ›μ†Œκ°’μ„ λ¬΄μž‘μœ„λ‘œ κ°–λŠ” λ°°μ—΄
const data = [5, 2, 7, 9, 2];

// 비ꡐλ₯Ό μœ„ν•΄ λ°°μ—΄μ˜ 첫 번째 μ›μ†Œ 볡사
let max = data[0];

// 1번째 이후 μ›μ†ŒλΆ€ν„° λ§ˆμ§€λ§‰ μ›μ†ŒκΉŒμ§€ 반볡
for (let i = 1; i < data.length; i++) {
    console.log("max=%d, data[%d]=%d", max, i, data[i]);

    // maxκ°€ data의 iλ²ˆμ§Έλ³΄λ‹€ μž‘λ‹€λ©΄ i번째 μ›μ†Œλ₯Ό max에 볡사
    // λΉ„κ΅μ‹μ˜ λΆ€λ“±ν˜Έ λ°©ν–₯만 λ°˜λŒ€λ‘œ μ§€μ •ν•˜λ©΄ μ΅œμ†Œκ°’ κ΅¬ν•˜κΈ° κ°€λŠ₯
    if (max < data[i]) {
        console.log(">> max에 " + data[i] + "λ₯Ό 볡사");
        max = data[i];
    }
}

console.log("---------");
console.log("μ΅œλŒ€κ°’ = %d", max);



/** κ²°κ³Ό **/
max=5, data[1]=2
max=5, data[2]=7
>> max에 7λ₯Ό 볡사
max=7, data[3]=9
>> max에 9λ₯Ό 볡사
max=9, data[4]=2
---------
μ΅œλŒ€κ°’ = 9
  • 반볡 횟수λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•œ μ—°μ‚°
    1. μ›μ†Œκ°€ 5개일 경우의 반볡 횟수 => 2회
      1. 5/2λ₯Ό μ—°μ‚°
      2. μ—°μ‚° κ²°κ³Όμ—μ„œ parseInt() λͺ…령을 톡해 λ‚˜λ¨Έμ§€λ₯Ό 버릴 수 μžˆλ‹€.
        1. parseInt(μ‹€μˆ˜): μ†Œμˆ˜μ  μ•„λž λ₯΄ 버리고 μ •μˆ˜ λΆ€λΆ„λ§Œ λ°˜ν™˜ν•˜λŠ” λͺ…λ Ήμ–΄
    2. μ›μ†Œκ°€ 6개일 경우의 반볡 횟수: 3회
      1. λ°°μ—΄μ˜ 길이/2 만큼 반볡 처리
/** μ—­μˆœ 배치 **/

const data = [1, 5, 2, 4, 3];
console.log(data);

const p = parseInt(data.length/2);

for (let i = 0; i < p; i++) {
    // i번째 μ›μ†Œμ˜ λ°˜λŒ€μͺ½μ— μœ„μΉ˜ν•œ μ›μ†Œμ˜ 인덱슀
    const k = data.length - i - 1;

    const tmp = data[i];
    data[i] = data[k];
    data[k] = tmp;
}

console.log(data);	// [ 3, 4, 2, 5, 1 ]
  • SWAP 처리
    1. λ³€μˆ˜ a와 λ³€μˆ˜ b의 값을 μ„œλ‘œ κ΅ν™˜ν•˜κΈ° μœ„ν•΄ λ˜λ‹€λ₯Έ λ³€μˆ˜ cλ₯Ό λ§Œλ“€μ–΄ c에 a의 값을 λŒ€μž…ν•œλ‹€.
    2. a에 b의 값을 λŒ€μž… ν›„, b에 c의 값을 λŒ€μž…ν•œλ‹€.
let a = 1;
let b = 2;
let c = 0;

c = a;
a = b;
b = c;

2μ°¨ λ°°μ—΄

1μ°¨ λ°°μ—΄μ˜ 각 μ›μ†Œκ°€ λ‹€λ₯Έ λ°°μ—΄λ‘œ κ΅¬μ„±λœ ν˜•νƒœλ‘œ, μ—΄μ˜ κ°œλ…λ§Œ μ‘΄μž¬ν•˜λŠ” 1μ°¨ 배열에 ν–‰μ˜ κ°œλ…μ΄ μΆ”κ°€λœ ν˜•νƒœμ΄λ‹€.

2μ°¨ λ°°μ—΄ 생성

[]λ₯Ό μ‚¬μš©ν•˜μ—¬ 1차원을 ν‘œν˜„ν•˜κ³ , κ·Έ μ•ˆμ— λ‹€μ‹œ []λ₯Ό 콀마둜 κ΅¬λΆ„ν•˜μ—¬ 1차원을 κ΅¬μ„±ν•œλ‹€.
/** myArrλΌλŠ” λ°°μ—΄ μ•ˆμ— 3개의 배열이 0, 1, 2번째 μœ„μΉ˜μ— 포함 **/
const myarr = [ [ ... ], [...] ];


/** μ•„λž˜μ™€ 같은 2μ°¨ 배열은 선언이 λΆˆκ°€λŠ₯ */
const myArr = [][][];

2μ°¨ λ°°μ—΄ μ›μ†Œμ— μ ‘κ·Ό

2ν–‰ 3열인 경우, ν–‰μ˜ μΈλ±μŠ€λŠ” 0λΆ€ν„° 1κΉŒμ§€, μ—΄μ˜ μΈλ±μŠ€λŠ” 0λΆ€ν„° 2κΉŒμ§€ μ‘΄μž¬ν•˜κ²Œ λœλ‹€. 배열에 μ €μž₯된 μ›μ†Œμ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œλŠ” λ³€μˆ˜ 이름 뒀에 ν–‰, μ—΄μ˜ μˆœμ„œλ‘œ 인덱슀λ₯Ό λͺ…μ‹œν•΄μ•Ό ν•œλ‹€.
const myArr = [
    [1, 2, 3],
    [4, 5, 6]
];

console.log(myArr[0][1]);	// 2

2μ°¨ λ°°μ—΄μ˜ ν–‰, μ—΄ 크기

1. ν–‰μ˜ 크기

λ°°μ—΄μ˜ 길이가 행을 μ˜λ―Έν•˜λ―€λ‘œ, 2μ°¨ 배열에 λŒ€ν•œ 길이λ₯Ό 직접 κ΅¬ν•˜λ©΄ ν–‰μ˜ 크기λ₯Ό μ•Œ 수 μžˆλ‹€.
const myArr = [
    [1, 2, 3],
    [4, 5, 6]
];

console.log(myArr.length);	// 2

2. μ—΄μ˜ 크기

2μ°¨ λ°°μ—΄μ˜ λͺ¨λ“  행에 λŒ€ν•œ μ—΄ 크기가 항상 λ™μΌν•˜λ‹€λŠ” 보μž₯은 μ—†λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ—΄μ˜ ν¬κΈ°λŠ” 각 ν–‰λ§ˆλ‹€ κ°œλ³„μ μœΌλ‘œ ꡬ해야 ν•œλ‹€.
const myArr = [
    [1, 2, 3],
    [4, 5, 6]
];

// λ°°μ—΄μ˜ 각 ν–‰ λ‹¨μœ„λ‘œ μ—΄ 쑰회 κ°€λŠ₯
console.log(myArr[0].length); // 0번째 ν–‰μ˜ μ—΄ 쑰회
console.log(myArr[1].length); // 1번째 ν–‰μ˜ μ—΄ 쑰회


/** κ²°κ³Ό **/
3
3

κ°€λ³€ λ°°μ—΄

μ›μ†Œλ‘œμ„œ ν¬ν•¨λ˜λŠ” 각 λ°°μ—΄μ˜ 크기가 λ™μΌν•˜μ§€ μ•Šμ€ 배열을 λ§ν•œλ‹€. 항상 λ°°μ—΄μ˜ λͺ¨λ“  행이 λ™μΌν•œ μ—΄λ‘œ κ΅¬μ„±λ˜λŠ” 것이 μ•„λ‹ˆλ©°, λͺ¨λ“  μ€„μ˜ μΉΈ μˆ˜κ°€ κ°™λ‹€λŠ” 보μž₯ λ˜ν•œ μ—†λ‹€. κ°€λ³€ 배열이 자주 λ“±μž₯ν•˜μ§€λŠ” μ•ŠμœΌλ©°, λŒ€λΆ€λΆ„μ˜ κ²½μš°κ°€ λͺ¨λ“  ν–‰λ§ˆλ‹€ μ—΄ 크기가 λ™μΌν•œ κ²½μš°μ΄λ‹€.
const a = [1, 3, 5, 7, 9];
const b = [2, 4, 6];

const data = [a, b];
console.log(data); // [[1, 3, 5, 7, 9], [2, 4, 6]]

for (let i=0; i<data.length; i++) {
    console.log(data[i]);
		// [1, 3, 5, 7, 9]
		// [2, 4, 6]

    for (let j=0; j<data[i].length; j++) {
        console.log(data[i][j]);
				// 각 λ°°μ—΄μ˜ μ›μ†Œλ“€ 좜λ ₯
    }
};

λ°˜λ³΅λ¬Έμ„ ν†΅ν•œ ν™œμš©

1. λ°°μ—΄μ˜ λͺ¨λ“  μ›μ†Œ μŠ€μΊ”

반볡문으둜 μŠ€μΊ”ν•˜κΈ° μœ„ν•΄μ„œλŠ” 쀑첩 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. μ΄λ•Œ, λΆ€λͺ¨ λ°˜λ³΅λ¬Έμ€ 행에 λŒ€ν•΄ κ΄€μ—¬ν•˜κ³ , μžμ‹ λ°˜λ³΅λ¬Έμ€ 열에 λŒ€ν•΄ κ΄€μ—¬ν•˜κ²Œ λœλ‹€.

2. for-of

for-ofλŠ” λ°°μ—΄ 값을 μˆœν™˜ν•˜λŠ” ν•¨μˆ˜λ‘œ λ°°μ—΄ μ›μ†Œλ₯Ό μΆ”μΆœν•œλ‹€.
  1. 1μ°¨ λ°°μ—΄ 탐색
    • μ›μ†Œμ˜ ν•©, μ΅œλŒ€ 값을 ꡬ할 λ•Œ μ΅œμ ν™”λ˜μ–΄ μžˆλ‹€.
    • item이 λͺ‡ λ²ˆμ§ΈμΈμ§€ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ— μ •λ ¬, 두 개의 λ°°μ—΄ 비ꡐ, μ—­μˆœ 배치 λ“±μ—μ„œλŠ” μ‚¬μš©ν•˜μ§€ λͺ» ν•œλ‹€.
    • μ›μ†Œλ§Œ μΆ”μΆœν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” logicμ—μ„œ μ‚¬μš©ν•˜κΈ° μ’‹λ‹€.
  2. 2μ°¨ λ°°μ—΄ 탐색
    • μ •λ ¬, 두 개의 λ°°μ—΄ 비ꡐ, μ—­μˆœ 배치 λ“±μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.
/** 1μ°¨ λ°°μ—΄μ˜ 탐색 **/
const data = [4, 5, 2, 1, 3];
for (const item of data) { // λ°°μ—΄ μ›μ†Œ 좜λ ₯
    console.log(item);
}

/** κ²°κ³Ό**/
4
5
2
1
3



/** 2μ°¨ λ°°μ—΄μ˜ 탐색 **/
const myArr = [
    [1, 2, 3],
    [4, 5, 6]
];

for (const item of myArr) { // λ°°μ—΄μ˜ ν•œ ν–‰ 좜λ ₯
    console.log(item);

    for (const sub of item) { // λ°°μ—΄μ˜ μ›μ†Œ 좜λ ₯
        console.log(sub);
    }
};

/** κ²°κ³Ό **/
[ 1, 2, 3 ]
1
2
3
[ 4, 5, 6 ]
4
5
6

'Study > JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JavaScript] λΈŒλΌμš°μ € λ Œλ”λ§ λ™μž‘ 원리  (0) 2022.07.08
[JavaScript] JSON  (0) 2022.05.02
[JavaScript] κΈ°λ³Έ 문법 ν™œμš©  (0) 2022.04.24
[JavaScript] λ³€μˆ˜μ˜ μœ νš¨μ„± λ²”μœ„ (λ³€μˆ˜μ˜ μŠ€μ½”ν”„)  (0) 2022.04.24
[JavaScript] 반볡문  (0) 2022.04.24
    'Study/JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [JavaScript] λΈŒλΌμš°μ € λ Œλ”λ§ λ™μž‘ 원리
    • [JavaScript] JSON
    • [JavaScript] κΈ°λ³Έ 문법 ν™œμš©
    • [JavaScript] λ³€μˆ˜μ˜ μœ νš¨μ„± λ²”μœ„ (λ³€μˆ˜μ˜ μŠ€μ½”ν”„)
    potatos
    potatos

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”