배열 순회는 일반적으로 for 루프를 사용합니다. ES5를 사용하면 forEach도 사용할 수 있습니다. ES5에는 map, filter, some, Every, Reduce, ReduceRight 등과 같은 배열 순회 기능이 있지만 반환 결과는 다릅니다. . 그러나 foreach를 사용하여 배열을 순회하는 경우 break를 사용하여 루프를 중단할 수 없으며 return을 사용하여 외부 함수를 외부 함수로 반환할 수 없습니다.
Array.prototype.method=function(){ console.log(this.length); } var myArray=[1,2,4,5,6,7] myArray.name="数组" for (var index in myArray) { console.log(myArray[index]); }
for in을 사용해도 배열을 순회할 수 있지만 다음과 같은 문제가 있습니다.
1. 인덱스는 문자열 숫자이므로 기하학적 연산을 직접 수행할 수 없습니다.
2 순회 순서가 내부 순서에 따르지 않을 수 있습니다. 실제 배열의 순서
3. for in을 사용하면 프로토타입을 포함하여 배열의 모든 열거 가능한 속성을 순회합니다. 예를 들어 Shangli의 프로토타입 메서드 메서드와 이름 속성
은 for in이 객체 순회에 더 적합하므로 배열 순회에 for in을 사용하지 마세요.
그러면 for 루프를 사용하는 것 외에도 어떻게 하면 배열을 더 간단하고 정확하게 탐색하여 기대치를 달성할 수 있을까요? 즉, ES6의 for of가 더 좋습니다.
Array.prototype.method=function(){ console.log(this.length); } var myArray=[1,2,4,5,6,7] myArray.name="数组"; for (var value of myArray) { console.log(value); }
기억하세요. for in traverses 배열의 인덱스(즉, 키 이름)이고 for of는 배열 요소 값을 트래버스합니다.
for of는 배열의 프로토타입 속성 메서드와 인덱스 이름을 포함하지 않고 배열의 요소만 순회합니다.
객체 순회는 일반적으로 for in을 사용하여 개체의 키 이름을 순회합니다.
Object.prototype.method=function(){ console.log(this); } var myObject={ a:1, b:2, c:3 } for (var key in myObject) { console.log(key); }
for in은 프로토타입으로 순회할 수 있습니다. myObject의 메서드 메서드, 프로토타입 메서드와 속성을 순회하지 않으려면 루프 내에서 이를 판단할 수 있습니다. hasOwnPropery 메서드는 특정 속성이 객체의 인스턴스 속성인지 여부를 확인할 수도 있습니다. 프로토타입 메서드와 속성을 제외한 ES5의 Object.keys(myObject) 배열을 통해 객체의 인스턴스 속성 구성을 가져옵니다.
for (var key in myObject) { if(myObject.hasOwnProperty(key)){ console.log(key); } }
위 내용은 for of와 for in의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!