라벨이 for in인 게시물 표시

[JavaScript] for in과 for of의 차이점

이미지
요약하면 for in : 객체에 사용 (객체의 모든 열거 가능한 속성에 대해 반복) for of : 배열에 사용 ([Symbol.iterator] 속성을 가지는 컬렉션 전용) for in은 보통 객체를 순회하면서 값을 출력할때사용한다. 배열도 객체이기 때문에 위의 코드에서도 순회를하며 값을 출력한다. 하지만 이러한 for in을 사용할 경우 위의 코드와 같이 자신이 가지고있는 않은 값들인 상위에서 추가되어있는 값들까지 출력하기때문에 문제를 발생시킬 수 있다. 즉 출력하고자 하지 않았던 다른 연관되어 있는 값들이 출력될 수 있다.  for in을 대신하여 for of를 사용하게되면 상위에 값들이 추가되어있다 하더라도 자신을 제외한 나머지 객체들에 대해서는 값을 출력하지 않는다. 추가적으로 for in 과 달리 for of는 문자열을 순회하며 값을 출력할 수 있다. 위와같은 문제점들을 고려해서 배열에서는 for in을 사용하기보다는 for of를 사용하도록 한다.

반복문의 종류

배열에는 다양한 반복문이 존재한다. 대부분의 반복문은 배열을 순회할때 사용되는데 이때 사용되는 다양한 반복문을을 나열해보고자한다. 반복문의 종류들에는 아래의 5가지정도가있다. 1번. for 문 2번. while 문 3번. foreach 4번. for in 5번. for of 4번 .for in  은 객체를 순회할때 많이 사용되며 배열에서 사용시 문제점이 발생하는데 예를들어서 기존에 배열이 존재하고 Array.prototype.getIndex = function(){}; 코드를 추가한뒤 for in 문을 사용하게되면 기존과 다르게 배열에 function(){}이 추가되게된다. 자신이 가지고있는 배열객체 이외에 prototype을 이용해서 자신의 상위에 추가된 이러한 객체들도 값으로 나타내주는 문제가 발생하므로 배열(array)에서 for in 문을 사용하지 않는것이 좋다. 또한 네이티브에 메서드를 추가해서 확장할경우 또한 문제를 발생시킬 수 있다. 이러한 문제점들을 해결해줄방안으로 출시된 반복문이 5번. for of 이다. 배열 반복문에 for of를 사용할것을 추천한다. 숫자배열만이아닌 문자배열에서도 사용가능하다. foreach의경우 filter와 같이 콜백함수를 순회하면서 결과값을 반환한다. 관련되서  https://seungwon-code.blogspot.com/2019/11/ddd9.html

[JavaScript] 객체(Object)와 객체 정렬 방식

객체는 서로 연관된 변수와 함수를 그룹핑하는 것이다. 객체는  몇 가지 특수한 기능을 가진 연관 배열이다. 객체는 프로퍼티(키-값 쌍)를 저장한다. 프로퍼티의 키는 문자열이나 심볼이어야 한다. 값은 어떤 자료형도 가능하다. 객체의 프로퍼티에 접근하는방법 - 점 표기법 : obj.key - 대괄호 표기법 : obj[key]               대괄호 표기법을 사용하면 key값에 공백(띄어쓰기)이 있어도 key값으로 사용이 가능하다. 객체를 작성할때  let 변수명 = { key : 'value'} 를 넣어서 작성하게되며 여러개의 key value를 작성할때 ,(쉼표)로 구분을해준다. 기존에 작성한 객체에 추가적으로 key와 value값을 넣고자할때는 두가지 방법으로 객체를 추가할 수 있다.  *첫번째 방법: 변수명.원하는key값 *두번째 방법: 변수명[원하는 key값] 첫번째 방식으로 작성할경우 key값을 작성할때 공백을 포함할 수 없다.  하지만 key값으로 공백을 포함한 key값을 추가하고싶을때 [ ] 괄호를 사용하면 띄어쓰기가 있더라도 오류없이 객체에 새로운 key와 value값을 추가할 수 있다. 프로퍼티를 삭제하고 싶을때: delete obj[key] 객체내에 찾고자하는 프로퍼티가 있는지 확인하고자 할 때: "key" in obj 없다면 undefined를 반환한다. 프로퍼티를 나열하고자 할 때 (객체안의 데이터를 나열하고자 할 때) : for ( let key in obj ) 객체 정렬 방식 for..in 으로 일반 객체를 순회하면서 나열할때 객체는 특별한 방식으로 정렬된다. 프로퍼티를 작성한 순서대로 출력될것이라고 생각할 수 잇지만 정수 프로퍼티의 경우 순서가 뒤죽박죽이어도 자동으로 오름차순으로 값을 정렬하여 출력한다. 그 외의 프로퍼티는 객체에 추가한 순서대로 정렬되어 출력된다. ex) key값이 정수인 경우 오름 차순으로 정렬 let obj1 = { 2 : &#