map과 filter 모두 배열의 내장함수이다. map 배열의 원소를 일괄적으로 변형시킬 때 사용하기 좋다. const classmate = ["철수","영희","훈이"] classmate.map((item)=>(item+"어린이")) const classmate = [ {name: "철수"}, {name: "영희"}, {name: "훈이"} ] classmate.map((item)=>({name : item.name + "어린이", school : "떡잎유치원"})) 실무에서는 컴포넌트의 return 값 안에서 많이 사용한다. map을 return 값 안에서 사용하기 위해서 { } 으로 감싸서 사용한다. // RenderMap 컴포넌트 export default const RenderMap = ()=>..
✍️ 정의 javascript 언어를 간편하게 사용할 수 있도록 단순화시킨 오픈 소스 기반의 자바스크립트 라이브러리 HTML의 DOM 조작과 이벤트 제어, 애니메이션 그리고 Ajax까지 웹 화면을 다루는 자바스크립트 라이브러리 지금은 Angular, React, Vue 와 같은 화면을 다루는 여러 기술들이 있지만, 그전에 화면 개발을 쉽게 해주는 라이브러리였다. 📘 Write less, do more - jQuery가 가지 철학 즉, 적은 코드로 생산성을 높이자는 뜻으로 해석할 수 있겠다. jQuery가 제공하는 기능 DOM과 관련된 처리를 쉽게 구현할 수 있다. 규칙성을 가지고 이벤트를 처리할 수 있다. 애니메이션 효과를 쉽게 만들 수 있다. Ajax 처리 방식을 편리하게 사용할 수 있다. 🔎 제이쿼리..
그룹화 스트림 사용 이후에 처리하기 조금 더 편리한 형태 즉, 내가 원하는 자료 구조로 그룹화 시킬 수 있다. groupingBy 전체 직원(Users)에서 직책(Position)별로 나눠서 직원을 그룹화 Map usersByPosition = users.stream() .collect(groupingBy(User::getPosition)); 결과 groupingBy의 파라미터로 온 분류함수를 기준에 의해 Map의 key로가고 객체들은 value로 그룹화되었다. {MANAGER=[tony, alex, oliveia], STAFF=[elsa, mayya, lily, jacob, jace], CEO=[eric] 2. 여러 조건에 의해서 분류 직책별로 우수사원을 뽑기위해 groupingBy의 오버라이드 메소드..
만일 내부 클래스를 이용하는데, 내부 클래스에서 바깥 외부의 인스턴스를 사용할 일이 없다면 static 클래스로 선언해주어야 한다. 왜냐하면 static이 아닌 내부 인스턴스 클래스는 외부와 연결이 되어 있어 '외부 참조'를 갖게되어 메모리를 더 먹고, 느리며, 또한 GC 대상에서 제외되는 여러 문제점을 일으키기 때문이다. 하지만 정적 멤버 클래스는 외부 인스턴스 없이도 만들어질 수 있기 때문에 '외부 참조'가 존재하지 않게 되고, 이로 인해 일회용으로 사용된 바깥 클래스 객체는 더이상 내부 클래스 객체와 아무런 관계가 아니게 되어 정상적으로 GC 수거 대상이 되어 메모리 관리가 잘 된다. 따라서 inner 클래스를 선언할때 static 키워드를 붙여주지 않으면 '외부 참조' 현상 때문에, 내부 클래스 ..
얕은 복사(Shallow Copy) 다양한 복합 멤버 변수를 갖고 있는 객체가 인스턴스가 생성될 때 인스턴스화 되면서 메모리에 할당된 주소의 값을 참조한다. 복사하려는 원본 객체에 대해서 새로운 단일 객체 또는 새로운 복합 객체를 만들고 원본 객체를 참조한다. 따라서 복사된 객체가 원본 객체에 종속적이다. call-by-reference와 유사한 개념이 된다. 깊은 복사(Deep Copy) 새로운 객체가 원본 객체 자체를 copy 하는 것이다. 즉, 원본 객체로부터 독립적인 객체를 생성한다. 즉, call-by-value 와 유사한 개념이 된다. 참조 https://okeybox.tistory.com/147 [Java] 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) 얕은 복사(Sha..
얕은 복사: 주소값까지만 복사 let copyObj = { ...obj } let copyArr = [ ...arr, ...secArr ] 깊은 복사: 실제 데이터까지 복사 JSON 데이터 포맷을 사용해서 전혀 새로운 객체 생성 let origin = { name: "user", age: 20, favoriteFood: { first: "sushi", second: "hamburger" } } const copy = JSON.stringify(origin) const deepCopy = JSON.parse(copy)