자바스크립트 배열
JavaScript 배열
JavaScript 배열은 모든 데이터 유형을 포함할 수 있으며 인덱스를 통해 각 요소에 액세스할 수 있습니다.
배열의 길이를 얻으려면 길이 속성에 직접 액세스하세요:
var arr = [1, 2, 3.14, 'Hello', null, true]; arr.length; // 6
배열의 길이에 새 값을 직접 할당하면 배열의 크기가 변경됩니다.
var arr = [1, 2, 3]; arr.length; // 3 arr.length = 6; arr; // arr变为[1, 2, 3, undefined, undefined, undefined] arr.length = 2; arr; // arr变为[1, 2]
Array는 인덱스를 통해 해당 요소를 새로운 값으로 수정할 수 있습니다. 따라서 Array의 인덱스에 값을 할당하면 Array가 직접 수정됩니다.
var arr = ['A', 'B', 'C']; arr[1] = 99; arr; // arr现在变为['A', 99, 'C']
인덱스가 인덱스를 통해 할당할 때 범위를 초과하면 배열 크기도 변경됩니다.
var arr = [1, 2, 3]; arr[5] = 'x'; arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
대부분의 다른 프로그래밍 언어는 배열 크기에 대한 직접적인 변경을 허용하지 않으며 범위를 벗어납니다. - 인덱스에 대한 경계 액세스는 오류를 보고합니다. 그러나 JavaScript Array에는 오류가 없습니다. 코드 작성 시 배열의 크기를 직접 수정하는 것은 권장하지 않습니다. 인덱스에 접근할 때 인덱스가 범위를 벗어나지 않는지 확인하세요.
indexOf
String과 유사하게 Array는 indexOf()를 통해 지정된 요소의 위치를 검색할 수도 있습니다.
var arr = [10, 20, '30', 'xyz']; arr.indexOf(10); // 元素10的索引为0 arr.indexOf(20); // 元素20的索引为1 arr.indexOf(30); // 元素30没有找到,返回-1 arr.indexOf('30'); // 元素'30'的索引为2
참고, 숫자 30 문자열 '30'은 다른 요소입니다.
slice
slice()는 String의 하위 문자열() 버전입니다. Array의 일부 요소를 가로채서 새 Array를 반환합니다.
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
slice()의 시작 및 끝 매개변수에는 시작 인덱스가 포함되고 끝 인덱스는 포함되지 않습니다.
slice()에 매개변수를 전달하지 않으면 처음부터 끝까지 모든 요소를 가로챕니다. 이를 사용하면 배열을 쉽게 복사할 수 있습니다.
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; var aCopy = arr.slice(); aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G'] aCopy === arr; // false
push and pop
push()는 배열 끝에 여러 요소를 추가하고 pop()은 삭제합니다. Array의 마지막 요소:
var arr = [1, 2]; arr.push('A', 'B'); // 返回Array新的长度: 4 arr; // [1, 2, 'A', 'B'] arr.pop(); // pop()返回'B' arr; // [1, 2, 'A'] arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次 arr; // [] arr.pop(); // 空数组继续pop不会报错,而是返回undefined arr; // []
unshift 및 Shift
Array의 헤드에 여러 요소를 추가하려면 unshift() 메서드인 Shift( ) 메서드는 배열의 첫 번째 요소를 삭제합니다.
var arr = [1, 2]; arr.unshift('A', 'B'); // 返回Array新的长度: 4 arr; // ['A', 'B', 1, 2] arr.shift(); // 'A' arr; // ['B', 1, 2] arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次 arr; // [] arr.shift(); // 空数组继续shift不会报错,而是返回undefined arr; // []
sort
sort()는 현재 배열을 정렬할 수 있으며 현재 배열 위치를 직접 수정합니다. , 직접 호출하면 기본 순서에 따라 정렬됩니다:
var arr = ['B', 'C', 'A']; arr.sort(); arr; // ['A', 'B', 'C']
우리가 지정한 순서대로 정렬할 수 있나요? 물론, 우리는 다음 기능에서 이에 대해 이야기할 것입니다.
reverse
reverse()는 전체 배열의 요소를 제거합니다. 즉, 역방향입니다.
var arr = ['one', 'two', 'three']; arr.reverse(); arr; // ['three', 'two', 'one']
splice
splice() 메서드는 배열을 수정하기 위한 "범용 메서드"입니다. 지정된 인덱스에서 시작하여 여러 요소를 삭제한 다음 해당 위치에서 여러 요소를 추가할 수 있습니다.
var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle']; // 从索引2开始删除3个元素,然后再添加两个元素: arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite'] arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle'] // 只删除,不添加: arr.splice(2, 2); // ['Google', 'Facebook'] arr; // ['Microsoft', 'Apple', 'Oracle'] // 只添加,不删除: arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因为没有删除任何元素 arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
concat
concat() 메서드 는 현재 배열을 다른 배열에 연결하고 새 배열을 반환합니다.
var arr = ['A', 'B', 'C']; var added = arr.concat([1, 2, 3]); added; // ['A', 'B', 'C', 1, 2, 3] arr; // ['A', 'B', 'C']
concat( ) 메서드는 수정되지 않습니다. 현재 배열이지만 새 배열을 반환합니다.
실제로 concat() 메소드는 원하는 수의 요소와 배열을 수신하고 자동으로 배열을 분할한 다음 모두 새 배열에 추가할 수 있습니다.
var arr = ['A', 'B', 'C']; arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]
join
join() 메서드는 현재 배열의 각 요소를 지정된 문자열과 연결한 다음 연결된 문자열을 반환하는 매우 실용적인 메서드입니다.
var arr = ['A', 'B', 'C', 1, 2, 3]; arr.join('-'); // 'A-B-C-1-2-3'
Array의 요소가 문자열이 아닌 경우 연결하기 전에 자동으로 문자열로 변환됩니다.
다차원 배열
배열의 요소가 배열인 경우 다차원 배열을 구성할 수 있습니다. 예:
var arr = [[1, 2, 3], [400, 500, 600], '-'];
위 배열에는 3개의 요소가 포함되어 있으며 그 중 처음 두 개는 그 자체가 배열입니다.