함수형 프로그래밍에 익숙해지기고 functional한 사고를 키우기위해 연습한 내용들을 기록한 포스트입니다.
두개의 배열을 하나의 배열로 합쳐보자.

  1. 각 배열의 요소는 객체이다.
  2. 각 배열의 객체의 “id” 프로퍼티가 일치하는 객체끼리 합친다.
  3. 남자이고 나이가 30이상이면 target을 true로, 아니면 false로

Trial 1. underscore의 map, extend, find 함수 활용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const arr1 = [
{name: 'owen', gender: 'male', age: 36, id: 11},
{name: 'bbo', gender: 'female', age: 34, id: 12},
{name: 'woo', gender: 'male', age: 20, id: 13}
];
const arr2 = [
{id: 10, phone: '010-1111-1111'},
{id: 11, phone: '010-2222-2222'},
{id: 12, phone: '010-3333-3333'},
{id: 13, phone: '010-4444-4444'}
];
const arr3 = _.map(arr1, function(item){
return _.extend(item, _.find(arr2, function(i){
return item.id === i.id;
}), {target: item.age >= 30 && item.gender === 'male'})
});
console.log(arr3);
/*[
{'name':'owen','gender':'male','age':36,'id':11,'phone':'010-2222-2222','target':true},
{'name':'bbo','gender':'female','age':34,'id':12,'phone':'010-3333-3333','target':false},
{'name':'woo','gender':'male','age':20,'id':13,'phone':'010-4444-4444','target':false}
]*/

[Check]

  • 위에서 find는 findWhere로 대체할 수 있다. 퍼포먼스 차이는 크게 없어 보인다.