을 up 배열과 객체.
배열은 행에서의 위치를 사용하여 검색 할 수있는 값의 행입니다 :
이의 일을 설명하려고하자) SO 질문에 이런 종류의에 대한 FAQ를 포함해야합니다. 배열 값의 순서는 고정되어 있으며 재정렬 될 수 있습니다.
개체은 키 - 값 쌍의 형식으로 명명 된 속성을 포함하는 변수입니다. 객체에 속한 키 - 값 쌍의 순서는 임의적입니다. { first:'firstvalue', second:'secondvalue', ..., nth:'nthvalue' }
어레이의 첫 번째 요소는 인덱스 0 인 요소 (매우 행의 제 1 위치 갖는 인덱스 값 0)이다 같은 물체 보이는 [ 'first', 'second', 'third', ..., 'nth' ]
: 같이
배열 보인다. myArray[0]
개체는 순서가 지정되지 않으므로 첫 번째 요소가 없습니다. myObject.somekey
또는 myObject['somekey']
을 사용하여 요소를 검색합니다. 당신은 배열이 끝날 때까지 번호가 매겨진 색인을 통해 반복 루프를 사용하여 배열
에 도달 할 때 : 객체의 경우
var i=0, len = myArray.length;
for (i; i<len; i++) {
//do something with >>> myArray[i] <<<
}
당신이 키와 in
연산자를 사용하여 루프를 사용 (당신이 전용 만들기)에 .hasOwnAttribute
방법 대상물의 사용자 정의 속성을 검색 :
for (var key in myObject){
if (myObject.hasOwnProperty(key)) {
// do something with >>> myObject[key] <<<
}
}
기본적으로, 서랍 찬장으로 배열 생각, 각각의 값을 포함.물건은 뚜껑에 스티커가있는 상자 더미로 상상할 수 있으며 상자의 내용을 설명합니다. 객체에서 무언가를 꺼내면 다음과 같이 묻습니다.
x 파일에 스티커 y가있는 상자가 있습니까? 그렇다면 무엇이 들어 있습니까?? 배열에서 무언가를 가져 오는 중, 당신은 묻습니다.
서랍 nr x의 내용을 알려주십시오. 질문에 관해서는 이제
: 당신은 for..in
루프에 대한 값을 검색하는 배열은 사용자 정의 방법, 즉 indexOf
이 포함되어 있습니다. 객체 스타일 루프를 사용하면 배열이 객체로 처리되고 키 (값이 function(){...}
인 것)가 표시됩니다. IE 그래서 배열을 반복 할 때 숫자 인덱스가있는 전통적인 for 루프를 사용하는 것이 더 좋습니다.
이유는 IE에만 있습니까? 최신 브라우저에서는 indexOf
이 Array
프로토 타입의 기본 메소드이며 원시 메소드는 표시되지 않습니다 (프로토 타입을 반복하지 않는 한). IE < 9 배열에 대한 네이티브 indexOf 메서드가 없습니다. 스크립팅에서 사용자가 정의한 확장으로 Array 프로토 타입에 메서드가 추가되었습니다.
문제의 주요 내용 : for ... in
을 사용하여 배열의 값을 반복하지 마십시오.
참고 myObject.hasOwnProperty (key)를 사용해야했습니다. 왜 그런지 잘 모르지만 위의 경우 문제가 생기면 도움이 될 것입니다 – cowls
@cowls : 잘 보입니다. 그것은 믹스/오타였습니다. 나는 대답을 수정했습니다. – KooiInc