목록JavaScript/자료구조와 자료형 (17)
dolog
230112 배열 메서드 중 Array.prototype.reduce() = arr.reduce() 배열을 기반으로 값 한개를 도출할 때 사용한다 기본 문법: let value = arr.reduce(() => { (acc, item, index, array) { // … }, [initial]); } 매개변수로 넘겨지는 함수는 배열의 모든 요소를 대상으로 차례차례 적용되지만, 적용 결과는 다음 함수 호출 시 사용된다(next call to function) accumulator : 이전 함수 호출 결과 initial : 함수 최초 호출 시 사용되는 초깃값(optional) index : 요소의 위치 array : 배열 이전 함수 호출 결과(accumulator)는 다음 함수를 호출할 때 첫번째 인수(p..
// 객체 ➡️ 문자열 let user = { name: “John”, age: 30, toString() { return `{name: “${this.name}”, age: ${this.age}}`; } } console.log(user); 문제점은 객체안에 프로퍼티가 변경되면 toString을 매번 수정해야한다(…) 다행이도 자바스크립트엔 이런 문제를 해결할 수 있는 방안이 존재한다 JSON.stringify *제이슨(JSON, JavaScript Object Notation) : 값이나 객체를 나타내주는 범용 포맷 RFC 4627 표준에 정의되어있다(고 하지만 2017년 이후 UTF-8 인코딩을 사용해 인코딩한다고 전해진다…) (*RFC(Request For Comments) : ietf에서 인터넷..
Date 객체를 숫자로 변경해 시간차 측정하기 ➡️ 타임스탬프(date.getTime() 호출 시 반환되는 값)가 된다 let date = new Date(); console.log(+date) 날짜에 마이너스 연산자를 적용해 밀리초 기준 시차를 구할 수 있다 // 스톱워치 let start = new Date(); for (let i = 0 ; i < 100000 ; i ++) { let doSomething = i * i * i; } let end = new Date(); console.log(`반복문을 모두 도는데 ${end - start} 밀리초가 걸렸습니다.`); Date.now() : 현재 타임스탬프(밀리초)를 반환하는 메서드로 Date 객체를 만들지 않고 시차를 측정한다 위에 예시보다 훨씬 ..
날짜(= 날짜/시간)를 저장, 날짜 관련 메서드 제공하는 내장 객체 Date 객체 생성하기 new Date() : 인수 없이 호출하면 현재 날짜와 시간이 저장된 Date 객체 반환 ➡️ let now = new Date(); new Date(milliseconds) : UTC 기준 1970년 1월 1일 0시 0분 0초에서 밀리초(1/1000 초) 후의 시점이 저장된 Date 객체가 반환 let Jan02_1970 = new Date(24 * 3600 * 1000); console.log(Jan02_1970); // Fri Jan 02 1970 09:00:00 GMT+0900 (KST) 타임스탬프(timestamp): 1970년 첫날을 기준으로 흘러간 밀리초를 나타내는 정수 사용하게 되면 날짜를 숫자 형태..
객체나 배열을 변수로 “분해”할 수 있게 해주는 특별한 문법 : 구조 분해 할당(destructuring assignment) 배열 분해하기 ➡️ let [item1 = default, item2…] = array, iterable object let arr = [“Doyeon”, “Shim”] // 구조 분해 할당 let [firstName, surname] = arr; console.log(firstName); console.log(surname); // 또는 split() 을 사용해도 좋다 let [firstName, surname] = “Doyeon Shim”.split(‘ ‘); 분해(destructing) ≠ 파괴(destructive) 쉼표를 사용하여 요소 무시하기 let [firstName..
순회(iteration)에 관하여 순회에 필요한 메서드) map.keys() : 각 요소의 key를 모은 iterable 객체 반환 map.values() : 각 요소의 value를 모은 iterable 객체 반환 map.entries() : 요소의 [key, value](property) iterable 객체 반환 1)포괄적인 용도로 만들어진 메서드라 자료구조(Map, Set, Array)에 적용하려면 일련의 합의를 따른다 2)그래서 커스텀 자료구조에 사용하려면 이 메서드들을 사용하지 못하고 직접 메서드를 구현해야한다 Object.keys, values, entries : 일반 객체에서 사용하는 메서드 Object.keys(obj) : 객체의 key만 담은 배열 반환 Object.values(obj) ..
JS의 엔진은 사용 가능성이 있는(도달 가능한) 값을 메모리에 저장한다 결론부터 말하자면 위크맵/셋은 객체와 함께 ‘추가 데이터’를 저장하는 용도로 사용된다 let kim = { name: “Kim” }; kim = null; // 객체 kim이 null이 된 이상 더이상 도달할 수 없어 메모리에서 삭제된다 객체나 배열, 맵과 셋을 구성하는 프로퍼티와 요소들도 똑같다 let kim = { name: “Kim” }; let array = [ kim ]; kim = null; // 객체 kim을 null로 덮어씌여도 배열의 요소이므로 값이 삭제되지 않고 또한 변하지 않는다 console.log(JOSN.strinify(array[0])); 맵에서 객체형 key를 사용한 경우도 똑같다 let kim = { n..
객체 : 키가 있는 컬렉션을 저장 배열 : 순서가 있는 컬렉션을 저장 맵(Map) : 키가 있는 데이터를 저장하지만 키에 대한 다양한 자료형을 허용한다 Map’s main methods and properties new Map() : 맵을 만든다 map.set(key, value) : key를 이용해 value를 저장한다 map.get(key) : key에 해당하는 값을 반환, 없다면 key가 없다면 undefined 반환한다 map.has(key) : key가 존재하면 true, 존재하지 않으면 false 반환한다 map.delete(key) : key에 해당하는 값을 삭제 map.clear() : 맵 안의 모든 요소를 제거한다 map.size : 요소의 개수를 반환한다 let map = new Map..