•원칙:
• 고급 브라우저는 Foreach Method를 지원합니다
구문 : Foreach 및 MAP 지원 2 매개 변수 : 하나는 콜백 함수 (항목, 색인, 목록) 및 컨텍스트입니다.
• foreach : 배열의 각 항목을 반복하는 데 사용됩니다. 이 메소드 실행은 반환 값이 없으며 원래 배열에 영향을 미치지 않습니다.
• 배열에는 여러 항목이 있으므로 익명의 콜백 함수는 여러 번 실행해야합니다.
• 익명 함수가 실행될 때마다 세 가지 매개 변수 값이 전달됩니다. 배열의 현재 항목, 현재 항목의 인덱스 인덱스 및 원래 배열 입력;
• 이론적으로,이 방법은 값을 반환하지 않고 배열의 모든 항목을 가로 지르며 원래 배열을 수정하지 않습니다. 그러나 우리는 배열의 색인을 통해 원래 배열을 스스로 수정할 수 있습니다.
• Foreach 메소드에서 이것은 Ary이며, 익명 콜백 함수에서 이것은 기본적으로 창입니다.
var ary = [12,23,24,42,1]; var res = ary.foreach (function, index, input) {input [index] = item*10;}) console.log (res); //-> unclefined; console.log (ary);-> 원래 배열을 변경합니다.•지도 : Foreach와 매우 유사합니다. 배열의 각 항목 값을 반복하고 배열의 각 항목을 반복하는 데 사용됩니다.
• 차이 : 리턴 리턴 값은지도 콜백 함수에서 지원됩니다. 반품은 배열 에서이 항목을 왜 변경하는지로 변경하는 것과 같습니다 (원래 배열에 영향을 미치지 않으면 원래 배열의 사본을 복제하고 해당 항목을 복제 된 배열에서 변경하는 것과 같습니다).
• 각 또는 맵은 두 번째 매개 변수 값을 지원합니다. 두 번째 매개 변수는 익명 콜백 함수에서이를 수정하는 것을 의미합니다.
var ary = [12,23,24,42,1]; var res = ary.map (함수 (item, index, 입력) {return item*10;}) console.log (res); //-> [120,230,240,420,10]; console.log (ary); //23,1]• 호환 된 쓰기 방법 :
• IE6-8의 Foreach 또는 MAP이든 (배열에는 두 가지 메소드가 없든, 프로토 타입이 호환되지 않으면) 두 가지 호환 방법을 캡슐화해야합니다. 코드는 다음과 같습니다.
/*** foreach traversal 배열* @param 콜백 [function] 콜백 함수; * @param 컨텍스트 [개체] 컨텍스트; */array.prototype.myforeach = function myforeach (콜백, 컨텍스트) {context = context || 창문; if (array.prototye의 'foreach') {this.foreach (콜백, 컨텍스트); 반품; } // IE6-8에서 콜백 함수 실행에 대한 논리를 직접 작성하십시오 (var i = 0, len = this.lenge; i <len; i ++) {Callback && 콜백. }} /***지도 트래버스 배열* @param 콜백 [function] 콜백 함수; * @param 컨텍스트 [개체] 컨텍스트; */array.prototype.mymap = function mymap (콜백, 컨텍스트) {context = context || 창문; if (array.prototye의 'map') {reture this.map (콜백, 컨텍스트); } // IE6-8 콜백 함수 실행을 직접 작성하는 논리 var newary = []; for (var i = 0, len = this.length; i <len; i ++) {if (callback === 'function') {var val = callback.call (context, this [i], i, this); Newary [newary.length] = val; }} return newary;}추신 : 위의 글쓰기 방법에 오류가 있으면 수정하십시오. ^^
위의 배열 트래버스 oreach () 및 map () 메소드 및 JavaScript에서 호환 된 쓰기 방법에 대한 소개는 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.