Javascript 를 사용하여 모든 항목이 어레이에서는 반복하고 어떻게 해야 합니까?
이 같은 일이 생각했죠.
forEach(instance in theArray)
하지만 이는 잘못된 것 같다 '는' 내 어레이이며 creditbank. 시라이.
편집은 없고, 그동안 몇 차례 좋은 수준들과 몇 년 동안 크게 평가했다. # 39, ve been 상당히 많았으나, 안타깝게도 they& 의해 케이블링의 수준들과 I& # 39 거부하려면 숨기지 않았다. (마치 위해 유보됨 검토) 또는 롤백합니다 않은 경우). 제발 제발.
=
ECMAScript&, 빨리, 5 다음 세 가지 방법을 사용할 수 있습니다 (ES5" ";) 이 순간 가장 폭넓게 사용할 수 있으며, 버전 2 에서 추가된 더 ECMAScript&, nbsp), 2015년 (" ES2015" " ES6";;;):
믿지아니하며 현대 생기기 환경 (그러하매 아닌 ie8) 의 위치를 액세스할 수 있습니다 (직접 사용하거나 폴리필스) '에서 추가된 기능은' 어레이입니다 es5 사용할 수 있습니다 '포리치' (['스펙'] [1] '매든'). <! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var a = ["a", "b", "c"];
a.forEach(function(entry) {
console.log(entry);
});
끝 - < 스니핏 >;! 또한 선택적으로 사용할 수 있는 '포리치' 콜백 함수를 호출할 때 '이' 로 사용할 수 있는 값을 콜백하는 (사용 안 함 참조). 각 항목에 대한 콜백 호출됨 어레이이며 건너뛰는 위해 존재하지 않는 항목은 스파스 배열입니다. 비록 내가 한, 위 3 개의 인수를 콜백하는 호출됨 사용됩니다. Value 의 각 항목을 색인입니다 해당 항목을 참조), 그리고 스토리지와의 you& # 39, 재 반복 오버 (# 39 의 경우에는 이미 doesn& 함수은 할꺼이나 되어, t).
또한 '포리치' 는 루프, 그들을 통해 all" ". 하지만, 다른 여러 유용한 " ES5 정의된 함수를 통해 원하는 방식으로 할 것을 어레이입니다 작동합니까 things". 기능은 다음과 같습니다.
때때로 가장 오래된 방법: <! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var index;
var a = ["a", "b", "c"];
for (index = 0; index < a.length; ++index) {
console.log(a[index]);
}
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var index, len;
var a = ["a", "b", "c"];
for (index = 0, len = a.length; index < len; ++index) {
console.log(a[index]);
}
끝 - < 스니핏 >;! 및/또는 계산을 뒤로: <! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var index;
var a = ["a", "b", "c"];
for (index = a.length - 1; index >= 0; --index) {
console.log(a[index]);
}
끝 - < 스니핏 >;! 하지만 현대적 자바스크립트 엔진, it& # 39 에 필요한 것은 그 마지막 에케 아웃해야 다소 주스. Es2015 있는 이상, 로컬 변수 값을 루프 '를' 인덱스할 만들 수 있습니다.
let a = ["a", "b", "c"];
for (let index = 0; index < a.length; ++index) {
let value = a[index];
console.log(index, value);
}
//console.log(index); // would cause "ReferenceError: index is not defined"
//console.log(value); // would cause "ReferenceError: value is not defined"
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
let a = ["a", "b", "c"];
for (let index = 0; index < a.length; ++index) {
let value = a[index];
console.log(index, value);
}
try {
console.log(index);
} catch (e) {
console.error(e); // "ReferenceError: index is not defined"
}
try {
console.log(value);
} catch (e) {
console.error(e); // "ReferenceError: value is not defined"
}
끝 - < 스니핏 >;! 그렇게 할 경우, '가치' 는 '뿐만 아니라 각 루프 (loop) 에 만들어진' 인덱스화할 /dev/rdsk/c0t0d0s4 이터레이션인지 마무리라뇨 폐쇄에 대한 참조입니다 바디입니다 렉시한테서 인덱스화할 특정 이터레이션에 작성된 '' (및 '가치').
let divs = document.querySelectorAll("div");
for (let index = 0; index < divs.length; ++index) {
divs[index].addEventListener('click', e => {
console.log("Index is: " + index);
});
}
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
let divs = document.querySelectorAll("div");
for (let index = 0; index < divs.length; ++index) {
divs[index].addEventListener('click', e => {
console.log("Index is: " + index);
});
}
<div>zero</div>
<div>one</div>
<div>two</div>
<div>three</div>
<div>four</div>
끝 - < 스니핏 >;!
실제 사례에 대한 인 '에' 유일한 어레이에서는 다음과 같습니다.
그 때만 보았으매 사례 1: '그' 를 사용하는 경우 스파레스 어레이입니다 dell. 대한 인 요소를 사용할 수 있는 적절한 보호: <! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
// `a` is a sparse array
var key;
var a = [];
a[0] = "a";
a[10] = "b";
a[10000] = "c";
for (key in a) {
if (a.hasOwnProperty(key) && // These checks are
/^0$|^[1-9]\d*$/.test(key) && // explained
key <= 4294967294 // below
) {
console.log(a[key]);
}
}
끝 - < 스니핏 >;! 3 기록하십시오 검사:
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
// Utility function for antiquated environments without `forEach`
var hasOwn = Object.prototype.hasOwnProperty;
var rexNum = /^0$|^[1-9]\d*$/;
function sparseEach(array, callback, thisArg) {
var index;
for (var key in array) {
index = +key;
if (hasOwn.call(a, key) &&
rexNum.test(key) &&
index <= 4294967294
) {
callback.call(thisArg, array[key], index, array);
}
}
}
var a = [];
a[5] = "five";
a[10] = "ten";
a[100000] = "one hundred thousand";
a.b = "bee";
sparseEach(a, function(value, index) {
console.log("Value at " + index + " is " + value);
});
끝 - < 스니핏 >;!
const a = ["a", "b", "c"];
for (const val of a) {
console.log(val);
}
끝 - < 스니핏 >;! , ) 를 통해 얻을 수 있는 닫히지만 아래에 있는 스토리지 및 정보기술 (it) 의 값을 루프 반복자가 받고 있는 것이 특징이다. # 39 이 문제에 대한 인 doesn& 사용하는 것이 없다 ',' 에 의해 정의된 반복자가 사용하고 있기 때문에 그 개체 (array), 그리고 그들의 엔트리입니다 어레이에는 정의하십시오 반복할 iterator (달라지지 않습니다 속성). ',' 에 대한 인 달리 ES5 순서를 항목은 는 그들의 인덱스화합니다 숫자순 방문했다.
가끔 충족되었으며 반복자가 명시적으로 사용해야 할 수도 있습니다. 그렇게 할 수 있지만, 고쳐주렴 it& # 39 의 많이유 클언크리에 위한 '보다'. It 다음과 같습니다. <! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
const a = ["a", "b", "c"];
const it = a.values();
let entry;
while (!(entry = it.next()).done) {
console.log(entry.value);
}
끝 - < 스니핏 >;! 이 정의에 일치하는 반복자가 백업이었습니다 객체에는 반복자가 사양명세. 그 때마다 새로운 방법을 '다음' 되돌려줍니다 결과 객체에는 전화하시기 거잖나. 그 결과, '속성' 수행됨 객체에는 전달하며, 미국, 그리고 표시할지를 it& # 39 의 속성 '가치' 에 해당하는 값을 수행됨 이터레이션에. ('수행되' 선택적입니다 경우 약간만이라도 '거짓', '가치' '' 정의되지 않은 경우 선택적입니다 될 것이다.) '가치' 를 제꿈의 반복자가 따라 다릅니다. 지원 (최소한) 세 가지 기능을 어레이에는 반환하는 iterator:
'값 ()'. This is the one I 함께사용할 명이다. 여기서 각 '가치' 는 해당 이터레이션에 정보기술 (it) 을 반환하는지 반복자가 어레이입니다 엔트리여야 ('", a".', '", b", 예를 들면,', '및' " c" 이전).
'키 ()'. 여기서 각 '가치' 가 있는 이터레이션에 반복자가 을 반환하는지 위한 핵심 (so 의 'a' 위 될 '", 0".', ',', ',' " 2" 1" ", 그 후).
'항목 ()'. 여기서 각 '가치' 을 반환하는지 반복자가 배열입니다 ' [키 값을]' 의 형태로 이터레이션에.
또한 같은 어레이입니다 진정한 어레이에는 별도로 있는 객체 '길이' 속성 및 속성 - 숫자 이름: '이', 'NodeList 인스턴스에서는 인수의 객체를 상술합니다. 어떻게 그 내용을 반복하고?
최소한 일부 수 있고, 심지어 같은 배열의 모든 가장 자주 적용하십시오 그들위에 외곽진입 잘 같은 어레이입니다 안내선:
사용 '포리치' 와 관련된 (ES5+) 1. ',' 이 의도적으로 다양한 기능을 아리스프로토티페 " generic". 일반적으로 사용할 수 있고 같은 어레이입니다 통해 객체에는 ['기능은 # 매입옵션'] [15] 또는 ['기능은 # 적용하십시오'] [16]. (자세한 내용은 경고 대한 호스트입니다 제공 객체에는 * 끝 무렵에 it& # 39 라고 하지만, s 드문 배정됩니다.) 예를 들어, 노드 '& # 39 를 사용하여' 포리치 '싶은', 's' 힐데노스 재산이잖아 # 39; d you& 됩니다. 아리스프로토티페스포에치스콜 (노데그차일드노스, 함수 (하위) { 뭔가 '자식' 와 // }).
(이는 것으로 보이는 일부 범위 지정 함수) // = 아리스프로토티페스포리치 포리치 var. 그러면 나중에 //. 포에치스콜 (노데그차일드노스, 함수 (하위) { 뭔가 '자식' 와 // }).
'4' (사용하는 반복자가 암시적으로) (ES2015+) * 위한 사용합니다. '가 제공하는' 위한 사용합니다를 반복자가 객체에는 있는 경우). # 39, ll we& 이를 어떻게 봐야 하고 있는, 특히 다양한 같은 어레이입니다 객체에는 호스트입니다 제공 수준들과. 예를 들어, '대한' 에서 '는 사양명세 NodeList 크리스 엘리스랄라 지원하도록 업데이트 이터레이션에. Spec '에서' 대한 '사마르콜레스티온 게테레멘츠비타냐메 않았다.
다른 때에는 붙여넣습니다 같은 어레이입니다 객체에는 충족되었으며 변환할지 할 수 있습니다 진정한 어레이입니다. 의외로 쉽게 그렇게 할 수 있다.
list. ['슬라이스에'] (1. https://tc39.github.io/ecma262/ # sec-array.prototype.slice) 방법을 어레이*를 이 같은 방법을 이용할 수 있다 '는 다른 방법으로, 이는 위에서 언급한' 슬라이스에 어레이에는 " 의도적으로 generic"; 그래서 이렇게 오브젝트에도 같은 어레이입니다 함께 사용할 수 있습니다. var 트루아라이 = 아리스프로토리 페이즐리체스콜 (라일리크로비치); 그래서 예를 들어, 우리는 우리가 할 수 있는 진정한 어레이이며 스맥랜드의 변환하십시오 NodeList '에' 이: var 를 = 아리스프로토리 페이즐리체스콜 (도쿠망스케리셀레스랄라 (div" ";));
var 트루아라이 = [스이트레이블로비치]; 그래서 예를 들어, 우리가 원하는 진정한 어레이이며 변환할지 a '이 확산되면서 구문을 NodeList' 에 상당히 간결하고 됩니다. var 를 = [오도쿠망스케리셀레스랄라 (div" ";)];
참고 *: 이 대답은 '적 만료되었는지. Look at 보다 현대적인 외곽진입, [방법 support. dell. 어레이에서는. 관심 있는 방법을 사용할 수 있습니다.
포리치
매핑해야
필터링합니다
zip
줄일 수 있습니다.
모든
일부
JavaScript 는 표준 방식으로 어레이에서는 반복할 수 있는 '는' 바닐라 루프:
var length = arr.length,
element = null;
for (var i = 0; i < length; i++) {
element = arr[i];
// Do something with element
}
하지만, 이 경우, 각 인덱스화할 외곽진입 단지 优秀 밀착형 배열입니다 차지하는 요소가. 이 경우 어레이입니다 분산, 그런 다음 성능 문제를 경험할 수 없는 것이므로 이 방법을 통해 정말 많은 지수 반복할 존재하는 어레이입니다. 이 경우 '에 대해. '루프 될 수 있는 좋은 아이디어입니다. 그러나 , 사용해야 합니다 수 있도록 적절한 보호 미디어만을 원하는 특성을 배열 (즉, 어레이입니다 요소) 가 'for.in' 에서 루프 행동을 했을 때, 또한 이후 추가 등록 정보 '로 정의되고, 아니면 기존 브라우저 열거됩니다 열거'.
[ECMAScript 5] 에서 [3] 의 원형 (prototype), 그러나 그것은 수 있을 것으로 포리치 메서드로부터 어레이입니다 지원되지 않는 구형 브라우저. 그래서 이를 지원하는 it 지속적으로 사용할 수 있는 환경을 인컨텍스트 합니다 (예를 들어, node. js 에서 서버측 JavaScript) 또는 사용 Polyfill" ";). 그러나 이 기능은 이 폴리필 뒤, 그 과정에서 아주 좋은 폴리필 쉽게 읽을 수 있는 코드를 포함할 수 있습니다.
[3]: https://en.wikipedia.org/wiki/ECMAScript # ECMAScript.2C_5th_Edition
[ JQuery ) 를 사용하는 경우 (http://jquery.com/) 라이브러리를 사용할 수 있습니다. [ 이케리드레이크 ] (http://api.jquery.com/jQuery.each/):
<! - 모든 언어: > js 랭 -;
$.each(yourArray, function(index, value) {
// do your stuff here
});
Jquery 는 이에 따라 javascript 에서 코드, 사용자 로렌아줌마가 편집하십시오 대신 질문
var length = yourArray.length;
for (var i = 0; i < length; i++) {
// Do something with yourArray[i].
}
여기 있는 것 같아요 역동기화 for 루프 언급하십시오 받을 수 있을 것 같다.
for (var i = array.length; i--; ) {
// process array[i]
}
, 기본적으로 사용하는 개발자들은 역동기화에 for 루프 (loop) 를 특별한 이유가 없으면 전달합니다. 비록 이러한 성능 향상, 그것은 일종의 비명을 보통 심각하지 않다. >. ", 그냥 이렇게 목록에 있는 모든 항목이, 내가 don& # 39, t care about ", 주문! 그러나 실제로 의도를 알 수 없는 것이 실제로 할 때 두차례에 걸쳐 있기 때문에 신경을 쓰지 않습니다 있는 것과 할 수 있는 순서, 그리고 정말 루프 역뱡향으로. 그래서 사실 다른 데 필요한 chunghwa 약간만이라도 정확하게 표현할 " don& # 39, t care"; 현재 대부분의 언어에서 사용할 수 있지만, 의도, 뭔가 수 있는 등, 예를 들어, '포이아코노더드 ()' 라고 소개한다. , T matter, 효율성 및 주문할 경우 doesn& # 39 는 염려사항 (flash. 가장 안쪽 루프 또는 애니메이션 게임 엔진) 관심용 역동기화에 for loop 를 현지 패턴화합니다 사용할 수 있을 수 있습니다. 그냥 보고 있다는 사실을 주지하십시오 역동기화 for 루프 일치하지 않을 수도 있는 기존 코드의 짓궂군요 무관한 주문하십시오!
보다 일반적으로 더 높은 수준의 안전 우려, 선명도, 여기서 가 코드를 사용하는 것이 좋습니다 저는 이전에 ['어레이입니다 포리치'] (https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/foreach) 를 위한 기본 패턴을 루프을 (단, 요즘 제가 사용을 선호하지만 '퍼트로프'). 선호하는 이유 '를 통해' 포리치 역동기화 루프 다음과 같습니다.
여부에 대한 논란이 제기되고 있다 '또는' 포리치 () '이' 퍼트로프 좋습니다.
for (var i = 0; i < array.length; i++) { ... } // Forwards
for (var i = array.length; i--; ) { ... } // Reverse
가운데 있는 것을 볼 수 있습니다 "는 조항을 난 ' (여기서 우리 보통 지켜보리니 비교) 와 마지막 조항은 비워집니다 (여기서 우리는 i++' 보통 '참조). 즉, 난) '도' 를 위해 사용되는 찼음을 연속. 그리고 결정적으로 실행되기 전에 체크된다면 , 각 이터레이션에.
어떤 사람들은 거의 같은 역동기화에 arrow) '를 그릴 수 있는' 루프, 최종 윙크:
for (var i = array.length; i --> 0 ;) {
일부 [C] [1] - 스타일입니까 언어 사용 '포리치' 를 반복하고 열거형. 이 완료되어도 JavaScript 를 'for.in' 루프 구조를:
var index,
value;
for (index in obj) {
value = obj[index];
}
가만히 보라. # 39 의 멤버 'for.in' 은 각 object& 반복하고, 열거 후 멤버) 의 프로토타입. # 39 의 원형 (prototype), 피할 수 있는 값을 통해 판독값 상속됩니다 object& 경우 속한 객체에는 속성을 선택하면 됩니다.
for (i in obj) {
if (obj.hasOwnProperty(i)) {
//do stuff
}
}
또한 [ECMAScript 5] '포리치' [3] 에 추가한 데 사용할 수 있는 방법을 사용하여 배열을 통해 '' 아리스프로토티페 칼백 열거합니다. (이 경우 계속 사용할 수 있도록 폴리필 docs 는 이전 버전의 브라우저와):
arr.forEach(function (val, index, theArray) {
//do stuff
});
[1]: http://en.wikipedia.org/wiki/C_% 28programming_language% 29
[3]: https://en.wikipedia.org/wiki/ECMAScript # ECMAScript.2C_5th_Edition
이것은 오래된 게시물로의 멋지구리해요 답을 이미 알고 있고, 너무나 많다. 돈 좀 더 완성도 있는 다른 하나는 던질 I& 생각했어요; d # 39 를 사용하여 앙굴라이스. 물론 이 경우, 각, 당연히, 그럼에도 불구하고 I& 사용하여 you& # 39 만 qic (re; d # 39 와 같은 것을 겁니다.
'2' 는 앙굴라르스포리치 인수 및 선택적 3 인수. 첫 번째 인수는 객체에는 반복할 (array), 두 번째 인수는 반복자가 기능, 옵션 3 인수는 객체에는 컨텍스트로 (# 39, & # 39 라고 this&, 기본적으로 루프 내에 있다.
각 루프를 포리치 를 사용하여 여러 가지입니다. 가장 간단하고 가장 많이 사용하는 것은 아마도
var temp = [1, 2, 3];
angular.forEach(temp, function(item) {
//item will be each element in the array
//do something
});
또 다른 길을 유용한 한 스토리지로는 항목 복사
var temp = [1, 2, 3];
var temp2 = [];
angular.forEach(temp, function(item) {
this.push(item); //"this" refers to the array passed into the optional third parameter so, in this case, temp2.
}, temp2);
angular.forEach(temp, function(item) {
temp2.push(item);
});
현재는 장단점이 앙굴라르스포리치 '기능이 내장된 바닐라 맛' 을 사용하는 '아닌' 루프지
가독성을 쉽냐구요
쉽냐구요 브리타빌레티
',' 앙굴라르스포리치 ES5 포리치 루프지 사용할 경우 사용할 수 있습니다. 이제 에프리시엔스키 내아기마저도 얻을 수 있는 단점 때문에 훨씬 for 루프는 루프 보다 느린 섹선에서 포리치 있다. 내가 잘 할 수 있기 때문에 이를 언급하십시오 pro/무선 it& # 39 의 일관되고 표준화됩니다.
다음 2 개의 고려해보십시오 네스트된 루프 못하며창조된 있는 똑같은 것. # 39 의 말하도다 let& 지금까지 2 어레이에는 배열입니다 각 각 객체에는 객체 및 속성 값을 # 39 의 결과를 디스크입니다. diskid that& 문자열으로 (또는 있는모든). # 39 의 및 let& 반복할 경우 각 they& # 39 라고 해야 하고, 그 결과 및 같은 일부 작업을 수행할:
angular.forEach(obj1.results, function(result1) {
angular.forEach(obj2.results, function(result2) {
if (result1.Value === result2.Value) {
//do something
}
});
});
//exact same with a for loop
for (var i = 0; i < obj1.results.length; i++) {
for (var j = 0; j < obj2.results.length; j++) {
if (obj1.results[i].Value === obj2.results[j].Value) {
//do something
}
}
}
왔습니다. '및' 포리치 ',' 앙굴라르스포리치 넷윈을 해당 문제에 대한 '정상' 둘 다 너무 느리다. 루피아부트 90% 느린. 그래서 대용량 데이터 집합을, 최고의 그대로 넷윈을 '는' 루프지
아니요, 계속 또는 분할합니다 복귀하십시오 지원. 실제로 '계속하시겠습니까' 에서 지원되는 " " 사고 ',' you put a ',' 에 계속 앙굴라르스포리치 복귀하십시오 문을 '앙굴라르스포리치 같은 단순 함수 (어레이이며 함수은 (item) {if (섬콘딧리오니스트루) 반품하십시오. }), '이 생길 수 있는 기능을 계속하는 빼냅니다 이터레이션에. 이 역시 넷윈을 때문입니다 '또는' 포리치 분할합니다 계속하시겠습니까 인컨텍스트 지원하지 않습니다.
A 포리치 구현 ([표시되는 이스피들] [1]).
function forEach(list,callback) {
var length = list.length;
for (var n = 0; n < length; n++) {
callback.call(list[n]);
}
}
var myArray = ['hello','world'];
forEach(
myArray,
function(){
alert(this); // do something
}
);
쉽게 사용할 수 있는 솔루션을 지금 약간만이라도 언더스코엘가이스 라이브러리란. # 39 의 it& 제공하는 등 많은 유용한 도구, '각' 와 '작업' 포리치 는 자동으로 위임합니다 넷윈을 경우 사용할 수 있습니다.
A 고데펜 예 의 작동 방식 입니다.
var arr = ["elemA", "elemB", "elemC"];
_.each(arr, function(elem, index, ar)
{
...
});
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
list = [0, 1, 2, 3]
for (let obj of list) {
console.log(obj)
}
끝 - < 스니핏 >;!
여기서 '의' 에서 '와' 작업 '을 피할 수 있도록 기이 연관됨 같은 다른 언어로' i '와' let ',' 루프를 반대로 바인딩됩니다 루프 내에 함수 내의.
중괄호 ({} ' (') 는 이 명령을 생략해야 하나밖에 없는 경우 (예를 들어, 위의 예에서).
아마도 '에 대해 (i = 0; 내가 <. 라이자리 크시. i++) '루프 최상의 선택은 아닙니다. 왜? 이 경우:
var array = new Array();
array[1] = "Hello";
array[7] = "World";
array[11] = "!";
[0] '을' 에서 '어레이입니다 메소드는 호출하십시오 어레이입니다 [2]'. 첫째, 이 t # 39 는 가장 먼저 참조입니다 com/go/4e6b330a_kr 너회가 don& 갖추지 않은 것과, 둘째, 셋째, 이 코드가 있는 변수를 어레이입니다 발쿰치로 수밖에. 여기서, it& # 39, s what I 사용:
for(var i in array){
var el = array[i];
//If you want 'i' to be INT just put parseInt(i)
//Do something with el
}
And if you want it to be a 기능, 이 작업을 수행할 수 있습니다.
function foreach(array, call){
for(var i in array){
call(array[i]);
}
}
If you want to break, 조금 더 논리를 폈다.
function foreach(array, call){
for(var i in array){
if(call(array[i]) == false){
break;
}
}
}
예:
foreach(array, function(el){
if(el != "!"){
console.log(el);
} else {
console.log(el+"!!");
}
});
돌려준다.
//Hello
//World
//!!!
for (var instance in objects) {
...
}
하지만 그것보다 간단해진다는 사용하는 이유 '에 대해 있을 수 있습니다' 루프 (http://otl. 스택 오버플로입니다 질문 왜 사용하고 "for.in" 의 어레이입니다 이터레이션에 고약한 생각인가요? )
var instance;
for (var i=0; i < objects.length; i++) {
var instance = objects[i];
...
}
이 오류는 반복자가 대한 비사양 스파스 목록*.직렬 여기서 지수는 0 부터 시작하며, 이는 일반적인 책정안 도쿠망스게테레멘츠비타냐메 또는 도쿠망스케리셀레스랄라 다룰 때)
function each( fn, data ) {
if(typeof fn == 'string')
eval('fn = function(data, i){' + fn + '}');
for(var i=0, L=this.length; i < L; i++)
fn.call( this[i], data, i );
return this;
}
Array.prototype.each = each;
Usage:* 예제
예 # 1*
var arr = [];
[1, 2, 3].each( function(a){ a.push( this * this}, arr);
arr = [1, 4, 9]
each.call(document.getElementsByTagName('p'), "this.className = data;",'blue');
각 p 태그 '가' class = " blue";
each.call(document.getElementsByTagName('p'),
"if( i % 2 == 0) this.className = data;",
'red'
);
',' 가 다른 모든 p 태그 class = " red" >;
each.call(document.querySelectorAll('p.blue'),
function(newClass, i) {
if( i < 20 )
this.className = newClass;
}, 'green'
);
마지막으로 첫 번째 20 파랑입니다 p 태그는 변경일 그린
二쇱쓽 사용할 때 문자열이 기능: 이 함수는 문맥에 맞지 만든 것 하나 빼놓을 수 없는 경우에만 사용할 수 있는 범위 및 일부 변수가 있다. 그렇지 않으면 더욱 더 효과적으로 전달할 수 있는 범위 설정 기능이 있다.
, 몇 가지 방법을 통해 반복할 어레이입니다 아래와 같이 JavaScript:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var languages = ["Java", "JavaScript", "C#", "Python"];
var i, len, text;
for (i = 0, len = languages.length, text = ""; i < len; i++) {
text += languages[i] + "<br>";
}
document.getElementById("example").innerHTML = text;
<p id="example"></p>
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var text = "";
var i = 0;
while (i < 10) {
text += i + ") something<br>";
i++;
}
document.getElementById("example").innerHTML = text;
<p id="example"></p>
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var text = ""
var i = 0;
do {
text += i + ") something <br>";
i++;
}
while (i < 10);
document.getElementById("example").innerHTML = text;
<p id="example"></p>
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
// For example, in this case we loop through the number and double them up using the map function
var numbers = [65, 44, 12, 4];
document.getElementById("example").innerHTML = numbers.map(function(num){return num * 2});
<p id="example"></p>
끝 - < 스니핏 >;!
프로그래밍에 대한 자세한 정보와 예를 보면 알 수 있는 어레이에는 블로그 포스트 [함수형 프로그래밍 JavaScript: 매핑해야 줄이고 필터링합니다] [1] .
[1]: http://cryto.net/ ~ joepie91/blog/2015/05/04/functional-programming-in-javascript-map-filter-reduce/
ECMAScript&, 빨리, 5 (JavaScript 에서 버전을) 를 작동합니까 어레이에는:
['C', 'D', 'E'].forEach(function(element, index) {
console.log(element + " is #" + (index+1) + " in the musical scale");
});
// Output
// C is the #1 in musical scale
// D is the #2 in musical scale
// E is the #3 in musical scale
붙박이 사용하는 데 관심이 있는 경우, 일부 작업을 어레이입니다 피쳐입니다.
// Let's upper case the items in the array
['bob', 'joe', 'jen'].map(function(elem) {
return elem.toUpperCase();
});
// Output: ['BOB', 'JOE', 'JEN']
[1,2,3,4].reduce(function(previous, current) {
return previous + current;
});
// Output: 10
// 1st iteration: previous=1, current=2 => result=3
// 2nd iteration: previous=3, current=3 => result=6
// 3rd iteration: previous=6, current=4 => result=10
// Check if everybody has 18 years old of more.
var ages = [30, 43, 18, 5];
ages.every(function(elem) {
return elem >= 18;
});
// Output: false
// Finding the even numbers
[1,2,3,4,5,6].filter(function(elem){
return (elem % 2 == 0)
});
// Output: [2,4,6]
[1,2,3].some(function(number) {
return number === 1;
});
이 때문에 일부 '는' 진정한 되돌려줍니다 즉시, 모든 콜백 실행됨을 주문하십시오 되돌려줍니다 어레이당 진정한, 단락 실행할 미삭. 원본 오토메이티드 프로토타입 com/go/lrvid4005_ps_kr 어레이입니다 장치당 [일부] [2]
[2]: # sec-15.4.4.17 http://www.ecma-international.org/ecma-262/5.1/
난 또 추가 싶은 이 컴포지션으로 역동기화 의 루프 및 위 사람이 이 구문은 이런 대답을 한다.
var foo = [object,object,object];
for (var i = foo.length, item; item = foo[--i];) {
console.log(item);
}
여러 가지 혜택을 제공합니다. 당신은 이미 첫 번째 저렇게 won& 참조입니다 # 39, 나중에 다른 할말이다 선언할 필요가 없다. 이 때 유용합니다 루프을 해구 객체에는 어레이입니다.
이렇게 하면 때마다 분할합니다 참조가 고정인지 거짓값 - 파우시 (정의되지 않은 등). 유리한 어쨌든요 교체품으로 사용할 수 있습니다. 그러나 조금 더 열심히 할 것 "이라고 읽을 수 있습니다. 또한, not" " 있지만브라우저에 따라 할 수 있다. 당초 보다 최적화된 작업 중.