애플리케이션 대해 forEach 자바 스크립트 배열,지도, 필터, 감소

설명하는 방법의 자바 스크립트 배열

 

각각의 방법 ES5.0 ES3.0 방법 :

  1. 원래의 배열을 변경 : 역, 정렬, 푸시, 취소], 변화, 스플 라이스 팝
  2. 소스 배열을 변경할 수 없습니다 작업이 원래의 배열을 변경하지 않습니다, 배열 추출하여 변경할 수 있습니다 : > 분할, toString - 대해 forEach, 필터,지도의 축소, reduceRight, 슬라이스는 CONCAT, 참가를,

A는 밀어 하나를 사용하여 배열의 마지막에 추가하는 매개 변수의 수를 받고, 배열의 길이가 수정 반환 할 수 있습니다.

모든 사용 함수를 호출 할 필요없이 직접 호출 프로그래밍의 배열에 기여하는 프로토 타입 체인에 : 배열을 달성하려면이 버튼을 누릅니다.

배열 .prototype. 푸시  =  함수  () {

VAR  LEN = 인수.length;

위한 ( VAR  =  0 ; i가  <  ; 나는  ++ ) {

[ .length는] =  인자 [ I ]을;

}

반환  .length를;

}

: 팝 , 배열의 마지막 끝을 제거 값의 배열의 길이를 감소하고 제거 항목을 반환

시프트 () : 일본어 제 어레이를 삭제하고, 삭제 된 요소의 값을 반환 빈 배열 복귀 미정 

취소] : 추가 원래 배열의 맨 앞에 매개 변수 및 반환 배열의 길이.

정렬 () : 오름차순으로 배열 엔트리 - 즉, 최소 값이 정면에 위치하고 있으며, 바닥면의 최대 값. 사람들이 당신이 원하는 자신의 기능 함수를 정의하기위한 인터페이스를 제공합니다.

방법의 종류 -> 인터페이스 기능을 제공합니다

1, 두 개의 매개 변수해야

값이 전면에 앞 복귀 수가 다음 음수 인 경우 2)의 반환 값 1 참조

2) 양수, 후자의 앞에 숫자

3) 고정 된 0

편곡 . 정렬 ( 기능  ( A, B ) {

// AB를 반환; // 오름차순

// 반환 바, 내림차순

돌아  수학. 랜덤 () -  0.5 ; // 임의의 순서

});

S의 plice : 방법의 매우 강력한 배열은 삭제, 삽입을 달성 대체 할 수있는 많은 용도가있다. 스플 라이스 (여러 시작 위치, 삭제할 [번호가 삽입 (-s)])

II.

 C는 oncat : 원래의 배열 변수를 추가한다. 이 방법은 현재 배열의 카피를 만들고이 복사본의 끝에 수신 매개 변수를 추가하고, 마지막으로 새로 생성 된 배열을 반환 할

T Ostring는 : 문자열로 매개 변수를 전파 될 것입니다

S의 이가는 : 배열에서 원래 인덱스의 시작 끝의 인덱스를 돌려줍니다 ( 끝 첨자 제외 ) 간에 항목의 새로운 배열을. 슬라이스 () 메소드는 항목의 시작과 끝 위치로 복귀 하나 개 또는 두 개의 매개 변수, 즉를 수용 할 수있다.

J OIN : 조인 (분리기) 다음 어레이 (A)의 그룹으로부터 요소 문자열 세퍼레이터 : 세퍼레이터로서 세퍼레이터는, 기본은 하나의 파라미터를 수신하는 콤마 구분이며, 생략한다.

S PLIT : 분할 (분리)하십시오 문자열 으로 나누어 배열 , 세퍼레이터 : 하나의 파라미터를 수신하는 세퍼레이터로서 세퍼레이터이다.

이러한 메소드는 ES3.0의 배열

새로운 방법 ES5.0은 다음과 같은 방법이있다 :

. 1 대해 forEach : 주어진 함수의 배열의 각 항목의 동작 배열 이송 사이클. 이 메소드는 반환 값이 없습니다. 타입 함수 매개 변수를 통과 한 기본이며, 매개 변수 : 콘텐츠 이송 배열 상기 제 1 배열의 인덱스 배열 자체에 대응.

실시 예의 다양한 방법에 대한 후속 호출을 용이하게하기 위해 배열을 정의한다;

도착했다 =

{이름 : "리우 페이", DES : '자궁 나쁜'섹스 'm', 나이 : 23},

{이름 : 'LiuYingJian'DES '성체 성사 좋은'섹스 'F', 나이 : 19},

{이름 : '왕 슈', DES : '아니 성체 성사'섹스 'F', 연령 : 20},

{이름 : '레이 왕', DES : '당신이 보지 못한 사람'섹스 'm', 나이 : 21},

{이름 : 데스 '리우 랭', '매우 피부'섹스 'm', 연령 : 22}

];

전달 함수 파라미터 머스트 FUNC, 지점을 통과 할 수있다이 점을 통과 할 수있는 두 번째 패스가 윈도우 함수가 실행될 때 (각 요소 인덱스 인덱스 비트는, 자기 자신을 ELE)

VAR oLiArray = document.getElementsByTagName ( '리');

arr.forEach (함수 (ELE 인덱스 자체) {

이 [인덱스] = .innerText ele.name;

}, oLiArray)

출력 :

결과는 (이 예는 어레이 리의 각각에 삽입되는 경우) 어레이의 특정 기능을 달성하기 위해이 함수를 호출 할 때마다 턴을 전파의 배열

프로토 타입 체인 배열 배열에 직접 사용할 수 물론 쉬운 프로그래밍 : 물론, 우리는 동일한 기능을 달성하기 위해 그것을 다시 작성할 수 있습니다

Array.prototype.myForEach = 함수 (FUNC) {

// 두 개의 매개 변수를 전달할 수 있으며, (사용하는 동안 기능을 가리키는)이 기능은 parma2 이것을받을

// _ 편곡 호출 (WHO 지점에 전화) 현재 배열을받을 수

VAR의 _arr 이것을 = LEN = _arr.length, parma2 = 인자 [1] || 창문;

위한 VAR (I = 0; I는 <렌; 나는 ++) {

func.apply (parma2 [_arr [I], I, _arr]);

}

}

다시는-호출은 더 많은 결과를 얻을 수 있습니다.

필터 : 필터 "특정 기능을 실행하고, 각 어레이는 필터 조건들의 어레이를 리턴한다.

예를 들면 :

VAR newArr arr.filter = (함수 (ELE 인덱스 자체) {

경우 (ele.sex == 'm')

true를 반환;

});

결과;

함수 내에서, 참 또는 거짓을 결정하는 현재 항목이 반환되는 경우는 true, 그렇지 않은 경우 현재 항목을 필터링합니다.

그것을 다시 작성 :

Array.prototype.myFilter = 함수 (FUNC) {

// 마지막 빈 배열을 수신에 새로 추가를 정의하고 결과를 반환

var에 _arr이, LEN = _arr.length을 =; parma2 = 인자 [1] || 창 newArr = [];

위한 VAR (I = 0; I는 <렌; 나는 ++) {

func.apply (parma2 [_arr [I], I, _arr])? newArr.push (deepClone ({} _arr [I])) ';

}

newArr를 반환;

}

M AP가 : 주어진 함수를 실행 배열의 각 항목의 "지도"를 의미, 각 함수 호출은 배열의 결과를 반환합니다.

X + --------------- 10 ---------> Y (10), 즉 다음 매핑의 다른 배열들 사이에 전송되는 각각의 X를 하였다면

사용 방법 :

VAR newArr arr.map = (함수 (ELE 인덱스 자체) {

ele.name + = 10;

ELE 반환 또는 원래의 각 리턴 //

})

그 결과는 다음과 같습니다

 

다시 작성 :

Array.prototype.myMap = 함수 (FUNC) {

VAR의 _arr 이것을 = LEN = _arr.length, parma2 = 인자 [1] || 창 newArr = [];

위한 VAR (I = 0; I는 <렌; 나는 ++) {

newArr.push (deepClone ({} func.apply (parma2 [_arr [I], I, _arr]))); // 깊이를 이용하여 클론을 원래의 배열에 영향을 미치지 않는다

}

반환 newArr는; // 허용 새로운 배열을 반환

}

R & LT 끌어 내고 앤드 reduceRight : 우측에서 좌측으로 횡단 reduceRight 후 일단 의해 이송 배열의 첫 번째 항목의 감소 () 방법. 감소 함수 ()로 전달하고 reduceRight ()는 네 개의 수신 된 파라미터 : 이전 값, 인덱스의 현재 값, 및 대상 항목의 배열. 이 함수에 의해 리턴 된 값은 자동으로 첫번째 파라미터로서 다음 단계로 전달된다. 배열의 첫 번째 항목이 두 번째 파라미터는 어레이의 두 번째 항목으로, 첫번째 파라미터 그래서 상기 제 2 어레이의 첫 번째 반복에서 발생.

사용 방법 :

VAR로 초기 = {이름 : '22'};

VAR lastValue arr.reduce = (함수 (preValue, curValue 인덱스 자체) {

preValue.name + = 1;

반환 preValue

}, 초기 값);

호출의 결과 :

더하기 하나는 왼쪽에서 오른쪽으로, 결과는 낮은 축적 시간과 마지막 호출이 아닌 각;

달성 할 수있다 다시 쓰기 :

Array.prototype.myReduce = 함수 (FUNC,로 초기) {// 여기서, 물론 제 2 및 제 3 파라미터는 상기와 같이 전송을 위해 사용하지 못할 수 있어야 개의 매개 변수를 전달

VAR의 _arr 이것을 = LEN = _arr.length, parma2 = 인자 [2];

위한 VAR (I = 0; I는 <렌; 나는 ++) {

func.apply로 초기 = (parma2 [로 초기, _arr [I], I, _arr]);

}

로 초기를 반환;

}

용도 : 스트링과 전체적으로 그 특성과 원래 문자열의 숫자 값의 배열로 분리 :

예를 들면 :

VAR 쿠키 = "1 = A, B = 2, C = 3, 4 = D, E 5 = 7 = g; F = 6";

함수 parseCookie (STR) {

VAR cookieArr = str.split ( ";");

cookObj는 = {}이었다

cookieArr.reduce (기능 (전, 다음, 인덱스, 자기) {

VAR nextArr next.split = ( '=');

cookObj [nextArr [0] = nextArr [1];

사전 반환;

} Chokobj)

cookObj를 반환;

}

VAR 요리사 = parseCookie (쿠키);

CONSOLE.LOG (요리)

 

출력 :

방법은 조금 어려운를 줄이기 어렵다하지만 여전히 잘 사용하지만,

모든 방법 :이 (&& 상당)는 false를 돌려주는 경우 배열을 분석하는 것은 각각의 요구에 부합하지 않다

몇 가지 방법이 참을 반환하면 어레이의 존재를 결정하는 단계는, 만족스러운 것이 아니다. (|| 상응하는)

VAR 플래그 = arr.every (함수 (ELE 인덱스 자체) {

리턴 ele.age> 20;

});

VAR 인 flag1 arr.some = (함수 (ELE 인덱스 자체) {

리턴 ele.age> 20;

});

산출

 

그것을 다시 작성 :

Array.prototype.myEvery = 함수 (FUNC) {

// 변수 결정을 추가 true를 반환 촉진

var에 _arr이, LEN = _arr.length을 =; parma2 = 인자 [1] || 창 플래그는 진정한 =;

위한 VAR (I = 0; I는 <렌; 나는 ++) {

만약 (! func.apply (parma2 [_arr [I], I, _arr])) {

플래그 = 거짓;

}

}

플래그를 반환;

}

이와 유사한 방법

 

 

주요 목적은 사용하기 쉽고, 우리는 더 나은 기본 원리를 이해 할 수 있도록 재 작성하는 것입니다

그것은 자율성을 높이기 위해 다른 사람의 방법에 크게 의존 할 필요는 없다

 

상기는 일반적으로 JavaScript로 사용되는 방법의 배열이다. 자신의 제안 쓰기를 채택 해 주셔서 감사합니다

게시 19 개 원래 기사 · 원 찬양 58 ·은 50000 +를 볼

추천

출처blog.csdn.net/cyg_l02/article/details/82286432