서면 시험에 종종 나타나는 인터뷰 질문. JavaScript의 배열은 다른 언어의 배열과 다소 다릅니다. 어레이 방법의 학습을 용이하게하기 위해 편집기는 아래 배열의 작동 방법을 편집했습니다. 살펴 보겠습니다.
배열 생성
JavaScript에서 배열을 만드는 방법에는 두 가지가 있습니다. 첫 번째는 배열 생성자를 사용하는 것입니다.
var arr1 = 새로운 배열 (); // 빈 배열 생성 var arr2 = 새 배열 (20); // 20 항목으로 배열을 만듭니다 var arr3 = new Array ( "릴리", "Lucy", "Tom"); // 3 문자열로 배열을 만듭니다
배열을 만드는 두 번째 기본 방법은 배열 리터럴 표기법을 사용하는 것입니다.
var arr4 = []; // 빈 배열 생성 var arr5 = [20]; // 1 항목이 포함 된 배열 생성 var arr6 = [ "릴리", "루시", "톰"]; // 3 문자열이 포함 된 배열을 만듭니다
배열 값을 읽고 설정할 때 사각형 브래킷을 사용하고 해당 값의 0 기반 숫자 지수를 제공합니다.
var arr6 = [ "릴리", "루시", "톰"]; // 배열 알림을 만듭니다 (ARR6 [0]); // lilyarr6 [1] = "Mary"; // 두 번째 항목을 MaryArr6 [3] = "Sean"으로 수정합니다. // Sean에 네 번째 항목을 추가합니다
JavaScript에서 배열의 길이 속성을 수정할 수 있습니다. 다음 예를 참조하십시오.
var arr = [ "릴리", "루시", "톰"]; // 3 문자열이 포함 된 배열 생성 arr [arr.length] = "sean"; // 3의 위시에서 "Sean"arr.length = arr.length-1을 추가합니다 (즉, 배열 끝).
객체가 배열 객체인지 여부를 결정 해야하는 경우 ECMAScript 5 이전에 배열 인스턴스를 사용하여 판단 할 수 있지만 연산자의 인스턴스 문제는 전역 실행 환경이 하나만 있다고 가정합니다. 웹 페이지에 여러 프레임 워크가 포함 된 경우 실제로는 두 가지 이상의 다른 글로벌 실행 환경이 있으므로 두 가지 이상의 다른 버전의 배열 생성자가 있습니다. 한 프레임 워크에서 다른 프레임 워크로 배열을 전달하면 전달 된 배열에는 두 번째 프레임 워크에서 기본적으로 생성 된 배열과 다른 생성자가 있습니다.
ECMAScript 5는 Array.isArray () 메소드를 추가했습니다. 이 방법의 목적은 값이 어떤 글로벌 실행 환경에 관계없이 값이 배열인지 여부를 결정하는 것입니다.
배열 방법
배열 메소드를 소개하는 것으로 시작하겠습니다. 배열 방법에는 배열 프로토 타입 방법 및 객체 객체에서 상속 된 메소드가 포함됩니다. 여기서 배열 프로토 타입 방법 만 소개합니다. 배열 프로토 타입 방법에는 주로 다음이 포함됩니다.
가입하다()
푸시 () 및 pop ()
shift () 및 Unshift ()
종류()
뒤집다()
concat ()
일부분()
접착()
indexof () 및 lastIndexof () (ES5에 새로 추가)
foreach () (ES5에 새로 추가)
map () (ES5에 새로 추가)
필터 () (새로 추가 된 ES5)
모든 () (새로 추가 된 ES5)
일부 () (새로 추가 된 ES5)
READE () 및 reduceRight () (ES5에 새로 추가)
ES5에 대한 새로운 브라우저 지원 :
오페라 11+
Firefox 3.6+
사파리 5+
크롬 8+
인터넷 익스플로러 9+
지원되는 브라우저 버전의 경우 배열 프로토 타입 확장을 통해 구현할 수 있습니다. 다음은 각 방법의 기본 기능에 대한 자세한 소개입니다.
1. join ()
결합 (분리기) : 배열의 그룹 요소는 구분 기호로 분리기를 사용하여 문자열로 문자열로 그룹 요소를 사용합니다. 생략되면 기본적으로 쉼표를 분리기로 사용하십시오. 이 메소드는 하나의 매개 변수 만 수신합니다. 즉, 분리기가 있습니다.
var arr = [1,2,3]; console.log (arr.join ()); // 1,2,3console.log (arr.join ( "-")); // 1-2-3console.log (ARR); // [1, 2, 3] (원래 배열은 변경되지 않음)
join () 메소드를 사용하여 문자열을 반복 할 수 있습니다. 문자열과 반복 수를 전달하여 반복 된 문자열을 반환하십시오. 함수는 다음과 같습니다.
함수 repeatString (str, n) {return new array (n + 1) .join (str);} console.log (repeatstring ( "abc", 3)); // abcabcabcconsole.log (repeatstring ( "hi", 5)); // hihihihihi2. 푸시 () 및 pop ()
푸시 () : 여러 매개 변수를 수신하고 배열 끝에 하나씩 추가하고 수정 된 배열의 길이를 반환 할 수 있습니다.
POP () : 배열 끝에서 마지막 항목을 제거하고 배열의 길이 값을 줄인 다음 제거 된 항목을 반환합니다.
var arr = [ "릴리", "루시", "톰"]; var count = arr.push ( "jack", "sean"); console.log (count); // 5console.log (ARR); // [ "Lily", "Lucy", "Tom", "Jack", "Sean"] var item = arr.pop (); console.log (항목); // seanconsole.log (arr); // [ "릴리", "루시", "톰", "잭"]
3. Shift () 및 Unshift ()
Shift () : 원래 배열의 첫 번째 항목을 삭제하고 삭제 된 요소의 값을 반환합니다. 배열이 비어 있으면 정의되지 않은 반환.
UNSHIFT : 원래 배열의 시작 부분에 인수를 추가하고 배열의 길이를 반환하십시오.
이 메소드 세트는 위의 푸시 () 및 pop () 메소드에 정확히 일치합니다. 하나는 피연산자 어레이의 시작이고 다른 하나는 피연산자 어레이의 끝입니다.
var arr = [ "릴리", "루시", "톰"]; var count = arr.unshift ( "jack", "sean"); console.log (count); // 5console.log (ARR); // [ "jack", "sean", "lily", "lucy", "tom"] var item = arr.shift (); console.log (항목); // jackconsole.log (ARR); // [ "Sean", "Lily", "Lucy", "Tom"]]]
4. 정렬 ()
정렬 () : 배열 항목을 오름차순 순서로 배열하십시오. 즉, 가장 작은 값은 전면에 있고 가장 큰 값은 마지막입니다.
정렬 할 때 Sort () 메소드는 각 배열 항목의 toString () 변환 메소드를 호출 한 다음 결과 문자열을 비교하여 정렬하는 방법을 결정합니다. 배열의 각 항목이 숫자 값이더라도 Sort () 메소드는 문자열을 비교하므로 다음 상황이 발생합니다.
var arr1 = [ "a", "d", "c", "b"]; console.log (arr1.sort ()); // [ "a", "b", "c", "d"] arr2 = [13, 24, 51, 3]; console.log (arr2.sort ()); // [13, 24, 3, 51] (메타 배열이 변경됨)
위의 문제를 해결하기 위해 Sort () 메소드는 매개 변수로서 비교 함수를 수신하여 어떤 값을 앞두고 어떤 값을 지정할 수 있습니다. 비교 함수는 두 개의 매개 변수를 수신하고, 첫 번째 매개 변수가 두 번째 파라미터가되면 음수를 반환하고, 두 매개 변수가 같으면 0을 반환하고, 첫 번째 매개 변수가 두 번째 매개 변수가 이후에 양수를 반환합니다. 간단한 비교 기능은 다음과 같습니다.
함수 비교 (value1, value2) {if (value1 <value2) {return -1;} else if (value1> value2) {return 1;} else {return 0;}} arr2 = [13, 24, 51, 3]; console.log (arr2.sort (compare)); // [3, 13, 24, 51]비교 함수를 통해 내림차순 정렬 결과를 생성 해야하는 경우 비교 함수에 의해 반환 된 값을 교환하십시오.
함수 비교 (value1, value2) {if (value1 <value2) {return 1;} else if (value1> value2) {return -1;} else {return 0;}} arr2 = [13, 24, 51, 3]; console.log (arr2.sort (compare)); // [51, 24, 13, 3]5. 리버스 ()
Reverse () : 배열 항목의 순서를 뒤집습니다.
var arr = [13, 24, 51, 3]; console.log (arr.reverse ()); // [3, 51, 24, 13] console.log (ARR); // [3, 51, 24, 13] (원래 배열 변경)
6. concat ()
concat () : 원래 배열에 인수를 추가하십시오. 이 메소드는 먼저 현재 배열의 사본을 생성 한 다음 수신 된 매개 변수를 사본 끝에 추가하고 마지막으로 새로 제작 된 배열을 반환합니다. Concat () 메소드에 매개 변수를 전달하지 않으면 현재 배열을 복사하고 사본을 반환합니다.
var arr = [1,3,5,7]; var arrcopy = arr.concat (9, [11,13]); console.log (arrcopy); // [1, 3, 5, 7, 9, 11, 13] Console.log (ARR); // [1, 3, 5, 7] (원래 배열은 수정되지 않았습니다)
위의 테스트 결과에서 우리는 다음을 찾을 수 있습니다. 전달되는 것이 배열 인 경우 배열의 항목이 배열에 추가됩니다. 그러나 통과 한 사람이 2 차원 배열이라면 어떨까요?
var arrcopy2 = arr.concat ([9, [11,13]]; console.log (arrcopy2); // [1, 3, 5, 7, 9, Array [2]] console.log (Arrcopy2 [5]); // [11, 13]
위의 코드에서 Arrcopy2 어레이의 다섯 번째 항목은 두 항목을 포함하는 배열입니다. 즉, CONCAT 메소드는 배열에 전달 된 각 항목 만 배열에 추가 할 수 있습니다. 배열로 전달 된 일부 항목이 배열 인 경우이 배열 항목은 항목으로 Arrcopy2에 추가됩니다.
7. 슬라이스 ()
Slice () : 원래 배열의 지정된 시작 위시에서 최종 첨자로 구성된 항목으로 구성된 새 배열을 반환합니다. Slice () 메소드는 하나 또는 두 개의 매개 변수, 즉 반환 할 항목의 시작 및 종료 위치를 허용 할 수 있습니다. 하나의 매개 변수의 경우, Slice () 메소드는 매개 변수의 지정된 위치에서 현재 배열의 끝까지 시작하는 모든 항목을 반환합니다. 두 개의 매개 변수가있는 경우 메소드는 시작 위치와 끝 위치 사이의 항목을 반환하지만 최종 위치에 항목을 포함하지 않습니다.
var arr = [1,3,5,7,9,11]; var arrcopy = arr.slice (1); var arrcopy2 = arr.slice (1,4); var arrcopy3 = Ar // [1, 3, 5, 7, 9, 11] (원래 배열은 변경되지 않았습니다) Console.log (Arrcopy); // [3, 5, 7, 9, 11] console.log (arrcopy2); // [3, 5, 7] console.log (arrcopy3); // [3, 5, 7, 11] console.log (arrcopy2); // [3, 5, 7] console.log (arrcopy3); // [3, 5, 7] console.log (Arrcopy4); // [5, 7, 9]
Arrcopy는 하나의 매개 변수, 즉 시작 위트 스크립트가 1이므로 반환 된 배열은 첨자 1 (첨자 1 포함)이며 배열의 끝까지 시작합니다.
ARRCOPY2는 두 개의 매개 변수를 설정하여 시작 위시 (1 포함)의 서브 어레이를 반환하고 최종 첨자 (4 제외)를 반환합니다.
ARRCOPY3는 두 개의 매개 변수를 설정하고 첨자를 음수로 끝납니다. 음수가 발생하면 해당 위치의 숫자를 교체하기 위해 어레이 길이 (6)의 값에 음수를 추가하므로 1에서 4까지의 서브 어레이입니다 (제외).
Arrcopy4의 두 파라미터는 음수이므로 배열 길이 6에 추가되고 양수로 변환되므로 슬라이스 (2,5)와 같습니다.
8. 스플 라이스 ()
Splice () : 매우 강력한 배열 방법으로 많은 용도가있어 삭제, 삽입 및 교체를 구현할 수 있습니다.
삭제 : 여러 항목을 삭제하고 2 개의 매개 변수를 지정할 수 있습니다. 삭제할 첫 번째 항목의 위치 및 삭제할 항목 수를 지정하십시오. 예를 들어, 스플 라이스 (0,2)는 배열에서 처음 두 항목을 삭제합니다.
삽입 : 지정된 위치에 여러 항목을 삽입하고 3 개의 매개 변수를 제공 할 수 있습니다 : 시작 위치, 0 (삭제할 항목 수) 및 삽입 할 항목. 예를 들어, 스플 라이스 (2,0,4,6)는 현재 배열의 위치 2에서 4와 6을 삽입합니다.
교체 : 지정된 위치에 여러 항목을 삽입하고 동시에 여러 항목을 삭제할 수 있습니다. 시작 위치, 삭제할 항목 수 및 삽입 할 항목 수의 3 개의 매개 변수 만 지정하면됩니다. 삽입 된 항목의 수는 삭제 된 항목의 수와 같을 필요가 없습니다. 예를 들어, 스플 라이스 (2,1,4,6)는 현재 배열 위치 2에서 항목을 삭제 한 다음 위치 2에서 4 및 6을 삽입합니다.
Splice () 메소드는 항상 원래 배열에서 제거 된 항목이 포함 된 배열을 반환하며 항목이 삭제되지 않으면 빈 배열이 반환됩니다.
var arr = [1,3,5,7,9,11]; var arrremoved = arr.splice (0,2); console.log (arr); // [5, 7, 9, 11] console.log (Arrremoved); // [1, 3] var arrremoved2 = arr.splice (2,0,4,6); console.log (arr); // [5, 7, 4, 6, 9, 11] Console.log (Arrremoved2); // [] var arrremoved3 = arr.splice (1,1,2,4); console.log (arr); // [5, 2, 4, 4, 6, 9, 11] Console.log (Arrremoved3); // [7]
9. indexof () 및 lastIndexof ()
indexof () : 찾을 항목과 검색 시작점의 위치를 나타내는 두 가지 매개 변수를 수신합니다. 여기서 배열의 시작부터 뒤로 찾아보십시오 (위치 0).
LastIndexof : 찾을 항목과 검색 시작점의 위치를 나타내는 두 가지 매개 변수를 수신합니다. 여기서 배열 끝에서 기대하기 시작하십시오.
두 방법 모두 배열에서 찾을 수있는 항목의 위치를 반환하거나 찾을 수없는 경우 1을 반환합니다. 첫 번째 매개 변수를 배열의 각 항목과 비교하면 수렴 연산자가 사용됩니다.
var arr = [1,3,5,7,7,5,3,1]; console.log (arr.indexof (5)); //2console.log(Arr.lastIndexof(5)); //5console.log(arr.indexof(5,2)); //2console.log(arr.lastindexof(5,4)); //2console.log(Ar.Indexof("5 "); //- 110. foreach ()
foreach () : 배열을 가로 지르고 배열의 각 항목에서 주어진 함수를 실행합니다. 이 방법에는 반환 값이 없습니다. 매개 변수는 모든 기능 유형이며 기본적으로 전달되는 매개 변수가 있습니다. 매개 변수는 다음과 같습니다. 트래버스 어레이 컨텐츠; 해당 배열 인덱스, 배열 자체.
var arr = [1, 2, 3, 4, 5]; Ar
11.지도 ()
Map () : 배열의 각 항목에서 주어진 함수를 실행하는 "MAP"를 참조하고 각 함수 호출의 결과로 구성된 배열을 반환합니다.
다음 코드는 맵 메소드를 사용하여 배열에서 각 숫자를 제곱합니다.
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.map (function (item) {return item*item;}); console.log (arr2); // [1, 4, 9, 16, 25]12. 필터 ()
필터 () : "필터"기능, 배열의 각 항목은 주어진 기능을 실행하고 필터링 조건을 충족하는 배열을 반환합니다.
var arr = [1, 2, 3, 4, 6, 7, 8, 9, 10]; var arr2 = arr.filter (function (x, index) {return index % 3 === 0 || x> = 8;}); Console.log (ARR2); // [1, 4, 7, 8, 9, 10]13. 모든 ()
모든 () : 배열의 각 항목이 조건을 충족하는지 여부를 결정합니다. 모든 항목이 조건을 충족 할 때만 사실이 반환됩니다.
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.every (function (x) {return x <10;}); Console.log (ARR2); // truevar arr3 = arr.every (function (x) {return x <3;}); Console.log (ARR3); // 거짓14. 일부 ()
일부 () : 조건을 충족하는 배열에 항목이 있는지 여부를 결정합니다. 그들 중 하나가 조건을 충족하는 한, 그것은 사실을 반환 할 것입니다.
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.some (function (x) {return x <3;}); Console.log (ARR2); // truevar arr3 = arr.some (function (x) {return x <1;}); Console.log (ARR3); // 거짓15. READE () 및 READERIGHT ()
두 방법 모두 배열의 모든 항목에 반복을 구현 한 다음 최종 반환 값을 구축합니다. READE () 메소드는 배열의 첫 번째 항목에서 시작하여 하나씩 끝까지 끝납니다. reduceRight ()는 배열의 마지막 항목에서 시작하여 첫 번째 항목으로 이동합니다.
두 방법 모두 두 가지 매개 변수를받습니다. 각 항목에서 호출 된 함수 및 병합 기반의 초기 값으로 (선택 사항).
함수는 감소 () 및 reduceRight ()를 감소시키기 위해 전달되었습니다. 이 함수에 의해 반환 된 값은 다음 항목으로 첫 번째 매개 변수로 자동 전달됩니다. 첫 번째 반복은 배열의 두 번째 항에서 발생하므로 첫 번째 매개 변수는 배열의 첫 번째 항이고 두 번째 매개 변수는 배열의 두 번째 항입니다.
다음 코드는 Reduce ()를 사용하여 배열의 합을 구현하고 초기 값 10은 처음에 배열에 추가됩니다.
var 값 = [1,2,3,4,5]; var sum = values.reguceright (function (prev, cur, index, array) {return prev + cur;}, 10); console.log (sum); // 25위는 편집기가 소개 한 JavaScript 배열 메소드의 전체 모음입니다 (권장). 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!