-
TIL-2024.02.25 - JS - MAP과 예제> 기초/Javascript 2024. 2. 25. 22:55
------- map
객체와의 차이:
- Map 객체는 키와 값의 쌍으로 이뤄진 컬렉션.
구분 객체 Map 객체 키로 사용할 수 있는 값 문자열 | 심벌 값 객체를 포함한 모든 값 이터러블 X O 요소 갯수 확인 Object.keys(obj).length map.size 생성:
// 기본 생성 const map1 = new Map(['key1','value1'], ['key2','value2']) console.log(map1) // Map(2) {'key1' => value1','key2' => value2'} // 중복된 키 > 덮어써짐 const map1 = new Map(['key1','value1'], ['key1','value2']) console.log(map1) // Map(1) {'key1' => 'value2'} // 요소 갯수 확인 const {size} = new Map(['key1','value1'], ['key2','value2']); console.log(size) // 2 const map = new Map(['key1','value1'], ['key2','value2']) console.log(map.size) // 2 // 요소 추가 (메소드 체이닝 가능) const map = new Map(); map.set('key1','value1') console.log(map) // Map(1) {'key1' => 'value1'} // 요수 추가 2 (모든 값을 키로 설정 가능) const map = new Map(); const lee = { name: 'Lee' } const kim = { name: 'Kim' } map .set(lee, 'developer') .set(kim, 'designer') console.log(map)// Map(2) { {name: "Lee"} => "developer" , {name: "Kim"} => "desginer" } // 요소 취득 const map = new Map(); const lee = { name: 'Lee' } const kim = { name: 'Kim' } map .set(lee, 'developer') .set(kim, 'designer') console.log(map.get(lee)); // developer console.log(map.get('key')); //developer // 요소 확인 console.log(map.has(lee)); // true // 요소 삭제 map.delete(kim); console.log(map) // Map(1) { {name: "Lee"} => "developer"} map.delete("kk"); // 없는 키로 삭제할때, 에러없이 무시 console.log(map) // Map(1) { {name: "Lee"} => "developer"} map.delete(kim).delete(lee); // set 메서드와 달리 메소드 체안 불가 // 일괄 삭제 map.clear() console.log(map) // Map(0){} // 요소 순회 (v-순회중인 요소 & k-순회중인 요소키 & map- 현재 순회중인 Map 객체 자체) map.forEach((v , k , map)=> console.log(v,k,map)) <!- - v: developer(순회중인 Value) - k: {name: "Lee"} (순회중인 Key) - map: Map(2) { {name: "Lee"} => "developer"}, {name: "Kim"} => "designer"}} (현재 순회중인 Map 객체 자체) --> for(let entry of map){ console.log(entry) // [{ {name: "Lee"} => "developer" , {name: "Kim"} => "desginer" }] } //// .keys() : Map 객체에서 요소키를 값으로 갖는 Iterator for(let key of map.keys()){ console.log(entry) // {name: "Lee"} , {name: "Kim"} } //// .values() : Map 객체에서 요소값을 값으로 갖는 Iterator for(let value of map.values()){ console.log(entry) // developer designer } //// .entries() : Map 객체에서 요소키와 요소값을 값으로 갖는 Iterator for(let entry of map.entries){ console.log(entry) // [{ {name: "Lee"}, "developer" , {name: "Kim"}, "desginer" }] }
예제 const solution = (ings, menu, sell) => { const ingsMap = new Map(); const menuMap = new Map(); ings.forEach(v => { const split = v.split(' '); ingsMap.set(split[0], split[1]) }) menu.forEach( v => { const split = v.split(' '); menuMap.set(split[0], split[2] - split[1].split('').reduce((p, n)=> { return Number(p)+ Number(ingsMap.get(n)?? 0) }, 0)) }) return sell.reduce((p, n) => { const split = n.split(' ') return p + (Number(menuMap.get(split[0])) * Number(split[1])) }, 0) } console.log("result:: ", solution([ "r 10", "a 23", "t 124", "k 9" ], [ "PIZZA arraak 145", "HAMBURGER tkar 100", "BREAD kkk 30", "ICECREAM rar 50", "SHAVEDICE rar 45", "JUICE rra 55", "WATER a 20" ], [ "BREAD 5", "ICECREAM 100", "PIZZA 7", "JUICE 10", "WATER 1" ]));
'> 기초 > Javascript' 카테고리의 다른 글
TIL-2024.02.27 - JS - 실행 컨텍스트-4. 렉시컬 환경-3 (0) 2024.02.27 TIL-2024.02.26 - JS - 실행 컨텍스트-3. 렉시컬 환경-2 (0) 2024.02.26 TIL-2024.02.23 - JS - 실행 컨텍스트-2. 실행 컨텍스트 스택과 렉시컬 환경 (0) 2024.02.23 TIL-2024.02.21 - JS - 실행 컨텍스트-1 (0) 2024.02.21 TIL-2024.02.20 - JS - 스코프 (0) 2024.02.20