JavaScript의 배열 유형은 다른 언어의 배열 유형과 매우 다릅니다. JavaScript의 각 항목은 모든 유형의 데이터를 보유 할 수 있습니다. 또한 JavaScript 배열의 크기를 동적으로 조정할 수 있으며 새 데이터를 수용하기 위해 데이터가 추가 될 때 자동으로 성장할 수 있습니다 .
배열 생성에는 두 가지 기본 형식이 있습니다.
1. 구조물 계열
var cities = 새로운 배열 ();
사전에 저장해야 할 항목 수를 알고 있다면이 숫자를 생성자에게 전달할 수도 있습니다.이 숫자는 자동으로 길이 속성의 값이됩니다.
var cities = 새로운 배열 (3);
배열에 포함되어야 할 항목을 배열 생성자로 전달할 수도 있습니다.
var cities = New Array ( "상하이", "베이징", "Shenzhen");
배열을 만들 때 새 연산자를 생략 할 수 있습니다.
var cities = 배열 (3); // 3 요소가 포함 된 배열을 만듭니다
2. 배열 문자 표현
어레이 리터럴 표기법은 다음과 같이 쉼표로 분리 된 배열 항목을 포함하는 한 쌍의 사각형 브래킷으로 표시됩니다.
var cities = [ "상하이", "베이징", "Shenzhen"]; var cities = []; // 빈 문자열을 만듭니다
배열의 값을 읽고 설정할 때 제곱 브래킷을 사용하고 0을 기준으로 숫자 인덱스를 제공합니다 (0에 기초하여 0은 0에서 계산하고, 첫 번째 용어는 0, 두 번째 항은 1 등) : 다음과 같습니다.
var cities = [ "Shanghai", "Beijing", "Shenzhen"]; Alert (도시 [0]); // "상하이"도시 [1] = "홍콩"; // 두 번째 항목 "베이징"을 "홍콩"도시로 수정합니다 [3] = "대만"// 새 항목 추가
배열의 항목 수는 길이 속성에 저장되며 읽기 전용이 아닙니다 . 따라서 길이 속성을 설정하면 배열 끝에서 항목을 제거하거나 배열에 새 항목을 추가 할 수 있습니다.
var cities = [ "Shanghai", "Beijing", "Shenzhen"]; cities.length = 2; Alert (도시 [2]); // 한정되지 않은
이 길이의 속성을 사용하면 배열 끝에 새 항목을 추가 할 수 있습니다.
var cities = [ "Shanghai", "Beijing", "Shenzhen"]; Cities [cities.length] = "홍콩";
1. 배열을 감지하십시오
ECMAScript5는 배열을 추가했습니다. value가 어떤 글로벌 실행 환경에 관계없이 값이 배열인지 여부를 결정하는 것입니다. 사용법은 다음과 같습니다.
if (array.isarray (value)) {// 배열에서 일부 작업을 수행}2. 변환 방법
모든 객체에는 tolocalestring (), toString () 및 valueof () 메소드가 있습니다. 배열의 toString () 메소드를 toString ()이라고하며 배열의 각 값의 문자열 형식에서 스 플리싱 된 쉼표로 구분 된 문자열을 반환합니다. 예를 들어:
var cities = [ "Shanghai", "Beijing", "Shenzhen"]; Alert (cities.tostring ()); // Shanghai, Beijing, Shenzhenert (Cities.valueof ()); // 상하이, 베이징, Shenzhenert (도시); // 상하이, 베이징, Shenzhenert (도시); // 상하이, 베이징, 심천
참고 : Alert ()는 문자열 매개 변수를 수신해야하므로 백그라운드에서 toString () 메소드를 호출하므로 toString () 메소드를 직접 호출하는 것과 동일한 결과가 발생합니다.
또한 tolocalestring () 메소드는 종종 tostring () 및 valueof ()와 동일한 값을 반환합니다. 차이점은 각 항목의 값을 얻기 위해 ToString () 메소드가 아닌 각 항목의 tolocalestring () 메소드가 호출된다는 것입니다. 예를 들어:
var p1 = {tolocalestring : function () {return "p1 tolocalestring"; }, tostring : function () {return "p1 tostring"; }}; var p2 = {tolocalestring : function () {return "p2 tolocalestring"; }, tostring : function () {return "p2 tostring"; }}; var p = [p1, p2]; 경고 (p); 경고 (p.toString ()); 경고 (p.tolocalestring ());결과는 Tostring 방법이 첫 번째 및 두 번째 줄에서 호출되고 Tolocalestring 방법이 세 번째 줄에서 호출됨을 보여줍니다.
배열에 의해 상속 된 tolocalestring (), toString () 및 valueOf () 메소드는 배열 항목을 기본적으로 쉼표로 구분 된 문자열 형태로 반환합니다. join () 메소드를 사용하면 다른 문자를 사용하여 문자열을 분할 한 다음 모든 배열 항목이 포함 된 문자열을 반환 할 수 있습니다.
var cities = [ "상하이", "베이징", "Shenzhen"]; Alert (도시); // Shanghai, Beijing, Shenzhenert (Cities.join ( ",")); // Shanghai, Beijing, Shenzhenert (Cities.join ( "|")); // Beijing | Shenzhen
3. 스택 방법
스택은 최후의 첫 번째 출력 (LIFO) 데이터 구조이며 스택에서 데이터 항목의 삽입 및 제거는 스택 상단에서만 발생할 수 있습니다. JavaScript 배열은 스택과 같은 동작을 구현하기위한 푸시 () 및 pop () 메소드를 제공합니다.
푸시 () 메소드
여러 매개 변수를 가져 와서 배열 끝에 추가 한 다음 배열의 길이를 수정할 수 있습니다.
var params = new array (); var count = params.push ( "a", "b"); alert (params); // A, Balert (Count); // 2
위의 예에서 푸시 () 메소드에 의해 리턴 된 삽입 항의 수를 알 수 있습니다.
팝 () 메소드
배열 끝에서 마지막 항목을 제거하고 배열의 길이를 줄이고 제거 된 항목을 반환하십시오.
var params = new array (); var count = params.push ( "a", "b", "c"); var item = params.pop (); alert (item); // calendart (params.length); // 2
4. 대기열 방법
대기열의 데이터 구조에 대한 액세스 규칙은 첫 번째 우선-아웃 (FIFO)입니다. 즉, 항목은 큐 끝에서 추가되고 항목은 큐 전면에서 제거됩니다.
shift () 메소드
Shift () 메소드는 JavaScript로 제공되며 배열의 첫 번째 항목을 제거하고 항목을 반환하며 동시에 배열의 길이 속성을 수정합니다.
var params = new Array (); var count = params.push ( "a", "b", "c"); var item = params.shift (); // 첫 번째 항목 알림 (항목)을 가져옵니다. // aalert (params.length); // 2
UNSHIFT () 메소드
JavaScript는 또한 Unshift () 메소드를 제공하며, 배열의 프론트 엔드에 항목을 추가하고 새 배열의 길이를 반환 할 수 있습니다.
var params = new array (); var count1 = params.unshift ( "a"); alert (count1); // 1alert (params); // avar count2 = params.unshift ( "b"); alert (count2); // 2alert (params); // b, avar count3 = params.unshift ( "c", "d"); alert (params); // c, d, b, a
한 번에 Unshift ()에 여러 용어가있는 경우이 용어를 순서대로 배열에 삽입하는 것으로 관찰되었습니다. 즉, 첫 번째 매개 변수가 전면에 삽입됩니다. 위의 예에서와 같이, "A"는 처음으로 삽입되며, "B"는 두 번째로 삽입되며 세 번째는 여러 가지 용어가 있지만 순서는 앞쪽에 C이고 뒷면에는 D가 있습니다.
5. 재주문 방법
배열에서 재정렬에 직접 사용되는 두 가지 방법이 있습니다.
리버스 () 메소드
Reverse () 메소드는 배열 항목의 순서를 반전시킵니다.
var 값 = [1,2,3,4,5]; values.Reverse (); Alert (값); // 5,4,3,2,1
정렬 () 메소드
기본적으로 Sort () 메소드는 배열 항목을 오름차순 순서로 배열합니다. 정렬을 달성하기 위해 정렬 () 메소드는 각 배열 항목의 toString () 변환 메소드를 호출 한 다음 결과 문자열을 비교합니다. 따라서 정렬 () 메소드는 문자열을 비교합니다 .
var 값 = [3,5,53,2,34]; values.sort (); alert (value); // 2,3,34,5,53
그러나 우리는이 분류가 기본적으로 의미가 없다고 말할 수 있으며, 필요한 것은 숫자 값을 정렬하는 것입니다. 정렬 () 메소드는 정렬 규칙을 지정하기위한 인수로서 비교 함수를 수신 할 수 있습니다 .
비교 함수는 두 개의 매개 변수를 수신하고, 첫 번째 매개 변수가 두 번째 매개 변수 앞에 있어야하는 경우 음수를 반환하고, 두 매개 변수가 같으면 0을 반환하고, 첫 번째 매개 변수가 두 번째 매개 변수 이후에 양수를 반환합니다.
함수 비교 (value1, value2) {if (value1 <value2) {return -1; } else if (value1> value2) {return 1; } else {return 0; }} var value = [3,5,53,2,34]; values.sort (compare); 경고 (값); // 2,3,4,34,536. 작동 방법
concat () 메소드
현재 배열의 모든 항목을 기반으로 새 배열을 만들 수 있습니다. 이 메소드는 현재 배열의 사본을 생성하고 사본 끝에 매개 변수를 추가하고 새로 제작 된 배열을 반환합니다. 하나 이상의 배열이 concat () 메소드로 전달되면 배열의 각 항목이 배열에 추가됩니다.
var arrays = [ "a", "b", "c"]; var arrays2 = arrays.concat ( "d", [ "e", "fe"]); Alert (Arrays); // A, B, Calert (Arrays2); // a, b, c, d, e, f
슬라이스 () 메소드
현재 배열의 하나 이상의 항목을 기반으로 새 배열을 만듭니다. Slice () 메소드는 하나 또는 두 개의 매개 변수, 즉 반환 할 항목의 시작 및 종료 위치를 수신 할 수 있습니다 . 매개 변수가 하나만 있으면 시작 항목에서 배열 끝까지 모든 항목을 반환합니다. 두 개의 매개 변수가 있으면 시작 위치와 종료 위치 사이의 항목을 반환합니다 (종료 항목 제외). Slice () 메소드는 원래 배열에 영향을 미치지 않습니다.
var cities = [Beijing ","Shanghai ","Shenzhen ","Guangzhou "]; var cities2 = cities.slice (1); var cities3 = cities.slice (1,3); Alert (cities2); // Shanghai, Shenzhen, Guangzhou Alert (Cities3); // 상하이, 심천
스플 라이스 () 메소드
Splice () 메소드는 주로 배열 중간에 항목을 삽입하는 데 사용되며 사용하는 3 가지 방법이 있습니다.
• 삭제는 여러 항목을 삭제하고 2 개의 매개 변수를 지정할 수 있습니다. 삭제할 첫 번째 항목 및 삭제할 항목 수는 다음과 같이 삭제됩니다.
var cities = [ "Beijing", "Shanghai", "Shenzhen", "Guangzhou"]; Cities.splice (1,3); Alert (도시); // 베이징
• 삽입 지정된 위치에 여러 항목을 삽입 할 수 있습니다. 3 개의 매개 변수를 지정하십시오 : 시작 위치, 0 (삭제할 항목 수) 및 삽입 할 항목
var cities = [Beijing ","Shanghai ","Shenzhen ","Guangzhou "]; Cities.splice (1,0,"홍콩 "); 경고 (도시); // 베이징, 홍콩, 상하이, 심천, 광저우
• 지정된 위치를 교체 할 수있는 항목을 교체하십시오. 3 개의 매개 변수를 지정하십시오 : 시작 위치, 삭제할 항목 및 삽입 할 항목.
var cities = [Beijing ","Shanghai ","Shenzhen ","Guangzhou "]; Cities.splice (1,2,"홍콩 "); 경고 (도시); // 베이징, 홍콩, 광저우
7. 위치 방법
JavaScript에는 indexof () 메소드와 lastIndexof () 메소드의 두 가지 위치 방법이 있습니다. 두 가지 방법 모두 발견 할 항목과 검색 시작점의 위치를 나타내는 (선택 사항) 색인의 두 가지 매개 변수를받습니다.
indexof () 메소드는 배열의 시작 부분에서 뒤로 보이는 반면, lastIndexof ()는 배열 끝에서 시작됩니다. 그들은 모두 배열에서 발견 된 항목의 위치를 반환하고 찾을 수없는 경우 -1을 반환합니다. 합동은 첫 번째 매개 변수를 배열의 각 항목과 비교할 때 사용됩니다.
var nums = [1,2,3,4,5,6]; Alert (nums.indexof (3)); // 2alert (nums.lastindexof (5)); // 4alert (nums.indexof (3,1)); // 2alert (nums.lastindexof (4,4)); // 3
8. 반복 방법
JavaScript는 배열에 대한 5 가지 반복 방법을 제공합니다. 각 메소드는 각 항목에서 실행될 함수와 (선택 사항) 함수를 실행하는 범위 객체 (이 값에 영향을 미칩니다)의 두 매개 변수를 수신합니다. 전달 해야하는 매개 변수 : 배열 항목의 값, 배열의 항목 위치 및 배열 객체 자체.
• 모든 () : 배열의 각 항목에 대한 주어진 함수를 실행하고 각 항목에 대해 행 수가 true를 반환하면 true가 반환됩니다.
• 필터 () : 배열의 각 항목에서 주어진 함수를 실행하고 True를 반환 할 항목으로 구성된 배열을 반환합니다.
• foreach () : 값을 반환하지 않고 배열의 각 항목에서 주어진 함수를 실행합니다.
• Map () : 배열의 각 항목에서 주어진 함수를 실행하는 기능으로 각 함수 호출의 결과를 반환합니다.
• 일부 () : 배열의 각 항목에서 주어진 함수를 실행합니다. 항목이 true를 반환하면 함수가 true를 반환합니다.
위의 방법 중 어느 것도 배열에 포함 된 값을 수정하지 않습니다.
9. 병합 방법
javaScript에는 배열 병합 방법은 Reduce () 및 reduceRight ()가 있습니다. 두 방법 모두 배열의 모든 항목에 반복 한 다음 최종 반환 된 값을 구축합니다. 여기서 reter () 메소드는 배열의 첫 번째 항목에서 시작하고 experight ()는 배열의 마지막 항목에서 시작합니다.
둘 다 두 개의 매개 변수를 수신 할 수 있습니다. 각 항목에서 호출 된 함수 및 (선택 사항) 병합 기반의 초기 값으로 (선택 사항). 함수는 감소 () 및 reduceRight ()를 감소시키기 위해 전달되었습니다. 이 함수에 의해 반환 된 값은 다음 항목으로 첫 번째 매개 변수로 자동 전달됩니다. 첫 번째 반복은 배열의 두 번째 항에서 발생하므로 첫 번째 매개 변수는 배열의 첫 번째 항이고 두 번째 매개 변수는 배열의 두 번째 항입니다.
var value = [1,2,3,4,5]; var sum = values.reduce (함수 (prev, cur, index, array) {return prev+cur;}); alert (sum); // 15콜백 함수가 처음 실행되고 이전은 1이고 CUR은 2입니다. 두 번째는 이전, 이전은 3 (1+2)이고 CUR은 3 (배열의 세 번째 항의 값)이며 각 항목에 액세스된다는 것을 알았습니다.
reduceRight ()는 비슷한 함수를 가지지 만 방향은 반대입니다.
JavaScript의 포괄적 인 분석 : 배열 유형은 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.