문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
wiki:javascript:javascript_note:js_arrays [2021/04/26 11:23] emblim98 |
wiki:javascript:javascript_note:js_arrays [2023/01/13 18:44] (현재) |
||
|---|---|---|---|
| 줄 13: | 줄 13: | ||
| \\ | \\ | ||
| <code javascript> | <code javascript> | ||
| - | < | + | let cars = [" |
| - | | + | document.getElementById(" |
| - | document.getElementById(" | + | |
| - | </ | + | |
| </ | </ | ||
| 줄 50: | 줄 48: | ||
| 공백과 줄 바꿈(line breaks)은 중요하지 않습니다. 선언은 여러 줄에 걸쳐있을 수 있습니다.\\ | 공백과 줄 바꿈(line breaks)은 중요하지 않습니다. 선언은 여러 줄에 걸쳐있을 수 있습니다.\\ | ||
| <code javascript> | <code javascript> | ||
| - | | + | let cars = [ |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | ]; | + | ]; |
| </ | </ | ||
| 줄 68: | 줄 66: | ||
| =====Access the Elements of an Array===== | =====Access the Elements of an Array===== | ||
| - | **인덱스 번호(index number)**를 참조하여 배열 요소에 액세스합니다.\\ | + | **%%인덱스 번호(index number)%%**를 참조하여 배열 요소에 액세스합니다.\\ |
| \\ | \\ | ||
| 이 스테이트먼트는 '' | 이 스테이트먼트는 '' | ||
| \\ | \\ | ||
| + | |||
| <code javascript> | <code javascript> | ||
| let name = cars[0]; | let name = cars[0]; | ||
| </ | </ | ||
| \\ | \\ | ||
| + | |||
| <code javascript> | <code javascript> | ||
| let cars = [" | let cars = [" | ||
| 줄 81: | 줄 81: | ||
| </ | </ | ||
| \\ | \\ | ||
| - | | + | |
| - | [0]은 첫 번째 요소입니다. [1]은 두 번째 요소입니다. | + | **Note:** 배열 인덱스는 0으로 시작합니다. |
| + | %%[0]%%은 첫 번째 요소입니다. | ||
| =====Changing an Array Element===== | =====Changing an Array Element===== | ||
| 줄 197: | 줄 198: | ||
| '' | '' | ||
| <code javascript> | <code javascript> | ||
| - | | + | let fruits, text; |
| - | fruits = [" | + | fruits = [" |
| - | | + | text = "< |
| - | fruits.forEach(myFunction); | + | fruits.forEach(myFunction); |
| - | text += "</ | + | text += "</ |
| - | document.getElementById(" | + | document.getElementById(" |
| - | | + | function myFunction(value) { |
| - | text += "< | + | text += "< |
| - | } | + | } |
| </ | </ | ||
| 줄 214: | 줄 215: | ||
| \\ | \\ | ||
| <code javascript> | <code javascript> | ||
| + | let fruits = [" | ||
| + | document.getElementById(" | ||
| + | function myFunction() { | ||
| + | fruits.push(" | ||
| + | document.getElementById(" | ||
| + | } // Banana, | ||
| </ | </ | ||
| \\ | \\ | ||
| + | |||
| '' | '' | ||
| <code javascript> | <code javascript> | ||
| + | let fruits = [" | ||
| + | document.getElementById(" | ||
| + | function myFunction() { | ||
| + | fruits[fruits.length] = " | ||
| + | document.getElementById(" | ||
| + | } | ||
| </ | </ | ||
| + | \\ | ||
| + | **WARNING!** | ||
| + | 인덱스가 높은 요소를 추가하면 배열에 정의되지 않은(undefined) " | ||
| - | **WARNING!** | + | \\ |
| - | | + | <code javascript> |
| + | let fruits, text, fLen, i; | ||
| + | fruits = [" | ||
| + | \fruits[6] = "Lemon"; | ||
| + | fLen = fruits.length; | ||
| + | text = ""; | ||
| + | for (i = 0; i < fLen; i++) { | ||
| + | text += fruits[i] + "< | ||
| + | } | ||
| + | document.getElementById(" | ||
| + | // Banana Orange Apple Mango undefined undefined Lemon | ||
| + | </ | ||
| + | |||
| + | =====Associative Arrays(연관 배열)===== | ||
| + | 많은 프로그래밍 언어는 명명된 인덱스를 가지고 있는 배열을 지원합니다.\\ | ||
| + | \\ | ||
| + | 명명된 인덱스를 가진 배열을 연관 배열(또는 해시 hashes)이라고 합니다.\\ | ||
| + | \\ | ||
| + | %%JavaScript%%는 명명된 인덱스를 가진 배열을 지원하지 않습니다.\\ | ||
| + | \\ | ||
| + | %%JavaScript%%에서 배열은 항상 번호가 매겨진 인덱스를 사용합니다.\\ | ||
| \\ | \\ | ||
| <code javascript> | <code javascript> | ||
| + | let person = []; | ||
| + | person[0] = " | ||
| + | person[1] = " | ||
| + | person[2] = 46; | ||
| + | let x = person.length; | ||
| + | let y = person[0]; | ||
| + | console.log(x); | ||
| + | console.log(y); | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | \\ | ||
| + | **%%WARNING!!%%**\\ | ||
| + | 명명된 인덱스를 사용하는 경우, %%JavaScript%%는 배열을 표준 오브젝트로 재정의합니다.\\ | ||
| + | 그 후 일부 배열 메서드 및 속성이 잘못된 결과를 생성합니다.\\ | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | let person = []; | ||
| + | person[" | ||
| + | person[" | ||
| + | person[" | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | =====The Difference Between Arrays and Objects===== | ||
| + | %%JavaScript%%에서 **배열(arrays)***은 **번호가 매겨진 인덱스(numbered indexes)**를 사용합니다.\\ | ||
| + | \\ | ||
| + | %%JavaScript%%에서 **오브젝트(objects)**는 **명명된 인덱스(named indexes)**를 사용합니다.\\ | ||
| + | \\ | ||
| + | 배열은 번호가 매겨진 인덱스를 가진 특수한 종류의 객체입니다. | ||
| + | \\ | ||
| + | |||
| + | =====When to Use Arrays. When to use Objects.===== | ||
| + | |||
| + | * %%JavaScript%%는 연관 배열을 지원하지 않습니다. | ||
| + | * 요소 이름을 문자열 (텍스트)로 지정하려면 오브젝트를 사용해야 합니다. | ||
| + | * 요소 이름을 숫자로 만들려면 배열을 사용해야 합니다. | ||
| + | |||
| + | =====Avoid new Array()===== | ||
| + | |||
| + | %%JavaScript%%의 내장 배열 생성자 '' | ||
| + | \\ | ||
| + | **대신 '' | ||
| + | \\ | ||
| + | 다음의 두 가지 다른 스테이트먼트 모두 포인트라는 이름의 새로운 빈 배열을 만듭니다: | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | let points = new Array(); | ||
| + | let points = []; // Good | ||
| </ | </ | ||
| + | \\ | ||
| + | 다음의 2개의 다른 스테이트먼트는 6개의 숫자를 가진 새로운 배열을 생성합니다.\\ | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | // | ||
| + | let points = new Array(40, 100, 1, 5, 25, 10); | ||
| + | let points = [40, 100, 1, 5, 25, 10]; | ||
| + | document.getElementById(" | ||
| + | console.log(points); | ||
| + | </ | ||
| + | \\ | ||
| + | '' | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | let points = new Array(40, 100); // Creates an array with two elements ( 40 and 100) | ||
| + | </ | ||
| + | \\ | ||
| + | 위의 요소 중에서 하나를 제거하면 아래와 같이 됩니다.\\ | ||
| + | <code javascript> | ||
| + | let points = new Array(40); | ||
| + | document.getElementById(" | ||
| + | // Creates an array with 40 undefined elements!!! | ||
| + | </ | ||
| + | |||
| + | =====How to Recognize an Array===== | ||
| + | 일반적인 질문: 변수가 배열인지 어떻게 알 수 있습니까? | ||
| + | \\ | ||
| + | 문제는 %%JavaScript%% 연산자 '' | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | let fruits = [" | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | \\ | ||
| + | %%typeof%% 연산자는 %%JavaScript%% 배열이 오브젝트이기 때문에 오브젝트를 반환합니다.\\ | ||
| + | \\ | ||
| + | |||
| + | ====Solution 1:==== | ||
| + | 이 문제를 해결하기 위해, %%ECMAScript 5%%는 새로운 메서드 '' | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | let fruits = [" | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | \\ | ||
| + | 이 솔루션의 문제점은 %%ECMAScript 5%%가 구번전의 브라우저에서 지원되지 않는다는 것입니다.\\ | ||
| + | \\ | ||
| + | |||
| + | ====Solution 2:==== | ||
| + | 이 문제를 해결하기 위해, 고유한 '' | ||
| + | <code javascript> | ||
| + | let fruits = [" | ||
| + | document.getElementById(" | ||
| + | |||
| + | function isArray(myArray) { | ||
| + | return myArray.constructor.toString().indexOf(" | ||
| + | } // true | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | 위의 함수는 인수가 배열이면 항상 true를 반환합니다.\\ | ||
| + | \\ | ||
| + | 또는 더 정확하게는, | ||
| + | |||
| + | ====Solution 3:==== | ||
| + | '' | ||
| + | \\ | ||
| + | <code javascript> | ||
| + | let fruits = [" | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| - | =====Associative Arrays===== | ||