TIL

2021.01.21

joy_lee 2021. 1. 21. 23:31

string.trim()

-string의 양 끝 공백을 제거한 새로운 문자열을 반환한다

-원래 문자열을 바꾸지 않는다

 

참고) developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

 

arr.reduce(callback[, initialValue])

-callback : 배열의 각 요소에 실행할 함수

-initialValue : 초기값 / 설정하지 않으면 배열의 첫 번째 요소를 사용한다

-반환값 : 누적 계산의 결과 값

 

-callback 함수의 인수들

1) accumulator : 콜백의 반환값 누적

2) currentValue : 처리할 현재 요소

3) currentIndex (Optional): 처리할 현재 요소의 인덱스

4) array (Optional): reduce()를 호출한 배열

 

** 최초 호출시 reduce에 initialValue에 따라 1), 2) 바뀜

initialValue accumulator currentValue
제공됨 === initialValue 배열의 첫 번째 값 arr[0]
제공되지 않음 배열의 첫 번째 값 arr[0] 배열의 두 번째 값 arr[1]

**받아온 검색 결과 data를 list에 추가할 때 사용함

 

initialValue가 제공되었으므로 html의 초기값은 '<ul>'이고, 배열의 첫 번째 값부터 시작된다

 

참고) developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

 

 

배열과 유사배열

배열(array) : 한 개의 변수에 여러 개의 값을 순차적으로 적용할 때 사용

유사배열(array-like object): 여러 값이 []으로 감싸져 있지만 배열이 아닌 것들

 

유사배열의 조건

1) 반드시 length가 있어야 한다. 없으면 유사배열로 인식하지 않는다.

2) index번호가 0번부터 시작해 1씩 증가해야 한다.(필수는 아님)

유사배열을 구분하는 방법

-typeof 는 array, object 둘 다 'object'로 나온다 ('array'자체가 존재X)
-Array.isArray()로 알아보면 true/false로 구분가능

유사배열을 구분해야 하는 이유

-배열의 메서드를 사용할 수 없다 (forEach 등)

-사용하기 위해 Array.from으로 배열로 바꿔주면 메서드를 사용할 수 있다

 

querySelectorAll로 선택한 li NodeList는 유사배열이다.

Array.from을 거쳐 array로 만든 후 forEach로 각 li에 EvenListener를 달아줄 수 있다

 

참고) www.zerocho.com/category/JavaScript/post/5af6f9e707d77a001bb579d2

 

arr.forEach(callback(currentValue)[, thisArg])

-주어진 callback 함수를 배열 요소 각각에 대해 실행함

-callback : 각 요소에 대해 실행할 함수

-thisArg(optional) : callback을 실행할 때 this로 사용할 값

 

callback 함수의 요소

1) currentValue : 처리할 현재 요소

2) index(optional) : 처리할 현재 요소의 인덱스

3) array(optional) : forEach()를 호출한 배열

 

-forEach()는 배열을 변형하지 않지만 callback이 변형할 수 있다.

-중간에 멈출 수 없다. 멈추는 경우 다른 메서드를 사용하는 것이 좋다(for, for...in 등)

 

참고) developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

'TIL' 카테고리의 다른 글

2021.01.28  (0) 2021.01.28
2021.01.25  (0) 2021.01.25
2021.01.20  (0) 2021.01.20
2020.09.16  (0) 2020.09.17
2020.09.14  (0) 2020.09.16