lodash 라이브러리는 자바스크립트로 개발시 가장 많이 사용되는 라이브러리 중에 하나입니다.
array를 다룰 때 번거로움을 없애고 쉽게 사용할 수 있도록 해줄뿐만 아니라 object, string 등을 다룰 때도 간편함을 제공해주며 디바운싱 기법 등 여러가지 많은 유틸리티 함수들을 갖고 있습니다.
자주 사용되는 5가지 카테고리를 살펴보면 다음과 같습니다.
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
let books = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1},
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2},
{title: "Seven Dwarfs", price: 35, author: "Disney", rank: 3},
{title: "Swallow's gift", price: 15, author: "Unknown", rank: 4},
];
let result;
result = _.find(books, item => item.title === 'Alice in Wonderland')
console.log(result)
// {title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2} 값 반환
자바스크립트 find 함수와 비슷하게 첫번째 파라미터로 배열을, 두번째 파라미터로 predicate(=test) function을 넣어주면 첫번째 찾은 객체를 리턴하거나 아니면 못찾으면 undefined를 리턴합니다.
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
let books = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1},
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2},
{title: "Seven Dwarfs", price: 35, author: "Disney", rank: 3},
{title: "Swallow's gift", price: 15, author: "Unknown", rank: 4},
];
let result;
result = _.find(books, _.matches({ author: 'Unknown' }))
// shorthand 표기법
// result = _.find(books, { author: 'Unknown' })
console.log(result)
// {title: "Swallow's gift", price: 15, author: "Unknown", rank: 4} 값 반환
두번째 파라미터로 function 대신 _.matches({author: 'Unknown'})을 사용할 수 있고, shorthand 표기법으로 짧게 줄여쓸 수도 있습니다.
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
let books = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1},
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2},
{title: "Seven Dwarfs", price: 35, author: "Disney", rank: 3},
{title: "Swallow's gift", price: 15, author: "Unknown", rank: 4},
];
let result;
result = _.filter(books, item => item.rank < 3);
console.log(result)
// 결과값
result = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1}
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2}
]
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
let books = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1},
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2},
{title: "Seven Dwarfs", price: 35, author: "Disney", rank: 3},
{title: "Swallow's gift", price: 15, author: "Unknown", rank: 4},
];
let result;
result = _.sumBy(books, item => item.price);
// 혹은 _.property()를 사용하여
// result = _.sumBy(books, _.property('price'))
// 혹은 _.property를 생략한 shorthand 표기법으로
// result = _.sumBy(books, 'price')
console.log(result);
// 95
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
let books = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1},
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2},
{title: "Seven Dwarfs", price: 35, author: "Disney", rank: 3},
{title: "Swallow's gift", price: 15, author: "Unknown", rank: 4},
];
let result;
result = _.maxBy(books, 'price')
console.log(result.title)
// Seven Dwarfs
[
'1. Alice in Wonderland',
'2. Seven Dwarfs',
'3. Swallow's gift',
'4. Three Little Pigs'
]
seq 카테고리의 chain 함수는 lodash wrapper 인스턴스를 만들어 주므로 연속해서 lodash 함수를 사용할 때 유용하게 사용할 수 있습니다.
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
let books = [
{title: "Three Little Pigs", price: 20, author: "Jacobs", rank: 1},
{title: "Alice in Wonderland", price: 25, author: "Carroll", rank: 2},
{title: "Seven Dwarfs", price: 35, author: "Disney", rank: 3},
{title: "Swallow's gift", price: 15, author: "Unknown", rank: 4},
];
let result;
result =_.chain(books)
.sortBy('title')
.map((item, index) => `${index + 1}. ${item.title}`)
.value();
console.log(result)
// ["1. Alice in Wonderland", "2. Seven Dwarfs", "3. Swallow's gift", "4. Three Little Pigs"]
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
const dataList = [
{date: "09-01 12:02", value: 3},
{date: "09-01 12:01", value: 2},
{date: "09-01 12:00", value: 1},
{date: "09-01 12:00", value: 1},
{date: "09-01 12:00", value: 1},
{date: "09-01 12:00", value: 1},
{date: "09-01 12:01", value: 2}
];
let result;
result = _.uniqBy(dataList, item => item.date)
// _.property() 표현으로 아래와 같이도 사용할 수 있습니다.
// result = _.uniqBy(dataList, 'date')
console.log(result);
// 결과값
// result = [
// {date: "09-01 12:02", value: 3},
// {date: "09-01 12:01", value: 2},
// {date: "09-01 12:00", value: 1}
// ]
uniqBy는 document를 찾아보면 Array에만 사용될 수 있습니다.
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
const gridList = [
{x: 1, y: 1},
{x: 1, y: 2},
{x: 2, y: 1},
{x: 2, y: 2}
]
// [
// [
// {x: 1, y: 1},
// {x: 1, y: 2},
// ],
// [
// {x: 2, y: 1},
// {x: 2, y: 2},
// ]
// ]
const tempResult = _.groupBy(gridList, 'x')
console.log(tempResult);
// tempResult = {
// [{x: 1, y: 1}, {x: 1, y: 2}],
// [{x: 2, y: 1}, {x: 2, y: 2}]
// }
let result;
result = _.values(tempResult);
console.log(result)
// result = [
// [{x:1, y:1}, {x:1, y:2}],
// [{x:2, y:1}, {x:2, y:2}]
// ]
먼저 groupBy 메서드를 사용해서 x의 키값을 가진 객체 배열을 만듭니다.
// lodash 라이브러리를 연동해줘야된다.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
const gridList2 = [
[{x:1, y:1}, {x:1, y:2}],
[{x:2, y:1}, {x:2, y:2}]
]
let result;
result = _.flatten(gridList2);
console.log(result)
// 결과값
// result = [
// {x:1, y:1},
// {x:1, y:2},
// {x:2, y:1},
// {x:2, y:2}
// ]
flattern은 말그대로 평평하게 펴주는 역할을 한다.