소개 전에 질문을 던지십시오 : 여러 배열을 하나의 배열로 결합하는 방법?
다음 공유 세션은 다음 하위 섹션으로 나뉩니다.
1. 연결 방법에 대한 기본 소개
2. 예에서 컨덕트 메소드를 느껴보십시오
1. 연결 방법에 대한 기본 소개
Concat 방법은 여러 배열을 병합하는 데 사용됩니다. 새 배열의 멤버를 원래 배열 끝에 추가 한 다음 새 배열을 반환하면 원래 배열은 변경되지 않았습니다.
console.log ([]. concat ([1], [2], [3]); // [1, 2, 3] console.log ([]. concat ([[1], [2], [3]]); // [1], [2], [3]] console.log ([]. concat (4, [[5,6], [7]]); // [4, [5, 6], [7]]
위의 코드에서 첫 번째 리턴 값은 3 개의 배열 [1], [2], [3]를 배열로 병합하여 [1, 2, 3]을 반환하는 것입니다. 두 번째는 빈 배열을 2 차원 번호와 결합하는 것입니다. 2 차원 배열의 구성원은 [1], [2], [3], [[1], [2], [3]가 반환됩니다. 반환 된 2 차원 배열. 세 번째 예제는 동일합니다. 개념에 대한 이해는 여기서 매우 중요합니다. 즉, 원래 배열의 꼬리에 새 배열의 구성원을 추가하는 것이 매우 중요합니다.
배열을 매개 변수로 수락하는 것 외에도 CONCAT는 다른 유형의 값을 매개 변수로 받아 들일 수 있습니다. 그들은 새로운 요소로 사용되어 배열의 끝을 추가합니다.
console.log ([]. concat (1,2,3)); // [1,2,3]; // console.log ([]. concat (1, [2,3])); // [1,2,3]; console.log ([]. concat ([1], [2,3]); // [1,2,3];
여기에는 콘텐츠가 적지 만 매우 간단 해 보입니다. 그러나 이해하기 쉽지 않습니다.
2. 예에서 컨덕트 메소드를 느껴보십시오
기본 지식에 대해 이야기 한 후 최근에 발생한 질문을 보여 드리겠습니다. 원래 제목은 다음과 같습니다.
예를 살펴보면 그것이 무엇을 의미하는지 볼 수 있습니다.
이 질문에 대한 해결책 중 하나는 다음과 같습니다.
var flatten = function (arr) {return [] .concat.apply ([], arr);};이 간단한 기능은 배열에서 요소를 병합하는 기능을 실현할 수 있습니다. 그러나이 반환 값을 이해하면 문제가 발생합니다.
질문 : 적용 메소드 사용과 적용 방법을 사용하지 않는 것 사이에 차이가있는 이유는 무엇입니까?
console.log ([]. concat.apply ([], [[1], [2], [3]])); // [1, 2, 3] console.log ([]. concat ([[1], [2], [3]]); // [[1], [2], [3]]
위의 코드에서는 빈 배열의 새 배열도 꼬리에 추가되고 첫 번째 배열은 반환됩니다 [1,2,3]. 두 번째는 2 차원 배열입니다.
던지고 쫓는 기간이 지나면 마침내 다른 이유를 이해했습니다.
먼저, 빈 배열에서 인스턴스 메소드를 연결하는 경우, 매개 변수를 Concat에서 전달하고 배열의 끝으로 밀어 넣습니다. 즉, 빈 배열은 전달 된 배열의 가장 바깥 쪽 배열과 병합 된 다음 새 배열이 반환됩니다.
console.log ([]. concat (1,2,3)); // [1, 2, 3] console.log ([]. concat ([1], [2], [3])); // [1, 2, 3] console.log ([]. concat ([[1], [2], [3]]); // [1], [2], [3]] console.log ([]. concat ([[1], [2], [3]]); // [[1], [2], [3]]]
위의 코드에서는 여러 배열에서 1 차원 배열, 2 차원 배열 및 3 차원 배열로 점차 변경됩니다.
JavaScript에서 통화, 적용 및 바인드 메소드의 자세한 설명 및 요약 기사에서, 적용 메소드의 함수는 호출 메소드와 유사 하며이 점 (함수가 실행되는 범위)을 변경 한 다음 지정된 범위에서 함수를 호출한다고 언급합니다. 함수는 즉시 실행됩니다. 유일한 차이점은 함수가 실행될 때 배열을 인수로 수신한다는 것입니다.
적용 메소드의 첫 번째 매개 변수는 또한 이것이 가리키고 싶은 객체입니다. null 또는 정의되지 않은 것으로 설정된 경우, 이는 전역 객체를 지정하는 것과 같습니다. 두 번째 매개 변수는 배열이며 배열의 모든 멤버는 차례로 매개 변수로 사용되며 원래 함수는 호출 될 때 전달됩니다. 원래 함수의 매개 변수는 호출 방법에 하나씩 추가되어야하지만 적용 메소드에서는 배열로 추가되어야합니다.
console.log ([]. concat.apply ([], [[1], [2], [3]])); // [1, 2, 3] console.log ([]. concat ([[1], [2], [3]]); // [[1], [2], [3]]
코드에서 볼 수 있듯이 첫 번째 코드 조각은 빈 배열에서 Concat 메소드를 먼저 호출합니다. 이 방법의 기능은 원래 배열 끝에 새 배열의 멤버를 추가하는 것입니다. 적용 메소드가 다시 호출되고 첫 번째 매개 변수가 전달되어 실행중인 객체의 범위를 지정합니다. 두 번째 매개 변수의 기능은 배열의 모든 멤버를 한 번에 매개 변수로 전달하고 호출 될 때 배열로 전달하는 것입니다.
따라서, 동시대 및 적용 방법이 동시에 사용될 때, 두 방법의 기능이 중첩 될 것이다. 이는 CONCAT 만 사용하는 것과는 다른 현상이다. 예를 들어 보자.
console.log ([]. concat ([1,2,3])); // [1, 2, 3] console.log ([]. concat.Apply ([], [1], [2], [3])); // [1, 2, 3] console.log ([]. concat ([[1], [2], [3]]); // [1], [2, [3]] console.log ([]. concat ([[1], [2], [3]]); // [[1], [2], [3]] console.log ([]. concat ([[1], [2], [3]]); // [[1], [2], [3]] console.log ([]. concat ([[1], [2], [3]]); // [[1], [2], [3]] console.log ([]. concat.apply ([[[[[1], [2], 2], [3]])); // [[[1], [2], [3]])); // [[1], [2], [3]]]
위의 코드에서 Concat 메소드는 가장 많은 숫자를 결합한 다음 병합을 기준으로 다음 레이어 배열을 병합합니다.
console.log ([]. concat.apply ([], [[], [1], [2], [3]]); // [1, 2, 3] // console.log ([]. concat (1,2,3))에 해당합니다. // [1,2,3]
요약 :
1. CONCAT 메소드 만 사용하면 새 배열의 멤버가 원래 배열 끝에 추가됩니다.
2. 적용 메소드를 사용하여 동시대 메소드 의이 포인터를 지정할 때, 두 방법의 함수가 중첩 될 것이다.
3. 배열 요소 병합 방법 :
var flatten = function (arr) {return [] .concat.apply ([], arr);}; var flatten = function (array) {return array.reduce (function (a, b) {return a.concat (b);}, [])}위는 편집기가 소개 한 Concat 메소드를 사용하여 배열 병합 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!