Inside Lodash: _.difference

 

_.difference(array, [values])

 

첫 번째로 주어지는 배열에서 후속 배열들을 빼줍니다. 장바구니에서 선택한 상품들을 제거하거나 전체 유저에서 특정 집단의 유저들을 빼는 등 의외로 쓰임새가 많은 함수입니다.

 


var _ = require('lodash');

const users = [ 'Amy', 'Baker', 'Charles', 'Dave', 'Judy', 'Loren', 'Mickey', 'Todd' ];
const teamA = [ 'Baker', 'Mickey' ];
const teamB = [ 'Dave', 'Mickey', 'Todd' ];
const noTeam = _.difference(users, teamA, teamB);
console.log(noTeam);

=> [ 'Amy', 'Charles', 'Judy', 'Loren' ]

 

마치 배열 빼기 배열 즉, ‘배열 – 배열’ 처럼 이해하면 쉽습니다.

한편, _.pullAll 함수도 비슷한 기능을 제공합니다. 하지만 difference 함수는 빼고 남은 값들로 새로운 배열을 만들어 반환하는 반면 pullAll 함수는넘어온 배열 자체를 변경시킵니다.

이 함수에서 배열의 값들이 서로 같은지(equality) 여부를 결정하는 알고리즘은 ‘SameValueZero’ 입니다. 이 알고리즘은 NaN과 +0, -0에 대한 이슈를 제외하면 === 연산자와 거의 동일하게 동작합니다. 자바스크립트에서 값의 비교를 위한 알고리즘은 여러가지가 있는데 다음 문서를 참고하시면 이해하시는데 도움이 되겠습니다.

Equality comparisons and sameness

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s