Library/Lodash
๐ Lodash ๊ฐ์ฒด ๋ํ & ์ฒด์ด๋ ๋ฐฉ๋ฒ
์ธํ_
2021. 11. 25. 10:12
๋ก๋์ฌ ๊ฐ์ฒด ๋ํ
_(๊ฐ)
- ๊ดํธ์์ ๊ฐ์ lodash๋ก ๋ํ๋ ๊ฐ์ฒด๋ก ์ผ๋ค.
let rap_val = _({ "f":3, "g":15 })โ
์ ์ด์ฟผ๋ฆฌ ์๋ฆฌ๋ ๋น์ทํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
<li>ํ๊ทธ๋ฅผ ์ ์ด์ฟผ๋ฆฌ๋ก ๊ฐ์ผ๋ค๊ณ ํ ๋, $('li') ์ด๋ฐ์์ผ๋ก ํ๋ค.
์ด ๋ฌธ๋ฒ์ ์๋ฏธ๋ HTMLCOLLECTION ๋ฐฐ์ด์ li๋ฅผ ์ ์ด์ฟผ๋ฆฌ์ฉ ๊ฐ์ฒด๋ก ๋ณํํ๋ค๋ ์๋ฏธ.
Lodash๋ ๋๊ฐ์ด ์ ๊ทผ ํ๋ฉด ๋๋ค.
๊ทธ์ $ ๋์ _ ๋ฅผ ์ฐ๋ ์ฐจ์ด์ ๋ฐ์ ์๋ค.
โ
_.prototype.value()
- lodash๋ก ๋ํ๋ ๊ฐ๋ค์ ํผ๋ค.
- ๋ณดํต ์ฒด์ด๋ ํ ํ์ ๊ฐ์ ์ป์๋ ์ฌ์ฉ
// Defining values
let values = { "f":3, "g":15 };
// _()๋ก ๋ฌถ์ผ๋ฉด Lodash ์ ์ฉ์ผ๋ก ๋ํ๋๋ค.
let rap_val = _(values)
// ๋ํ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ํผ๋ค.
let unwrap_val = rap_val.value();
console.log(unwrap_val); // { f: 3, g: 15 }โ
๋ก๋์ฌ ํจ์ ์ฒด์ด๋
_.chain()
- Lodash๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค์ํ ํจ์์ ํ์ฅ์ฑ ๋๋ฌธ๋ ์์ง๋ง, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๊ธฐ ์ํด์ ์ด๋ค.
- ์ ์ด์ฟผ๋ฆฌ์ฒ๋ผ, ๊ฐ ๋ก๋ค์ฌ ํจ์๋ค์ ์ฒด์ด๋ ํ๋๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _
.chain(users) // users๋ฐฐ์ด๋ก ์ฒด์ด๋ ์์
.sortBy('age') // age์ ๊ฐ๋ค์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
.map(function(o) {
return o.user + ' is ' + o.age; // ๋ฌธ์์ด ์ด์ด๋ถ์ฌ ๋ฐฐ์ด๋ก ๋ฐํ
})
.head() // ์ฒซ๋ฒ์งธ ์์ ์ ํ
.value(); // ๊ฐ
// => 'pebbles is 1'โ
์ค์ฒฉ๋ ๊ฐ์ฒด์ value๋ฅผ ๋ฝ์ ์ฐ๊ธฐ
const data = [
{
tag: {
name: 'tag1',
media: {
nodes: [
{
id: 'uid1',
user: 'gracefullight',
caption: 'caption1',
likes: 10,
},
{
id: 'uid2',
user: 'gracefullight',
caption: 'caption2',
likes: 20,
},
],
},
},
},
{
tag: {
name: 'tag2',
media: {
nodes: [
{
id: 'uid3',
user: 'gracefullight',
caption: 'caption3',
likes: 30,
},
{
id: 'uid4',
user: 'gracefullight',
caption: 'caption4',
likes: 40,
},
],
},
},
},
];
/* ์ ์ค์ฒฉ๊ฐ์ฒด์์ ๋ฐ๋ก nodes ํค๊ฐ์ ๊ฐ์ฒด๋ค๋ง ๋ฐ๋ก ๋นผ์ ๋ฐฐ์ด๋ก ๋ง๋๋ ์ฒด์ด๋ */
result = _
.chain(data)
.map('tag.media.nodes') // ํค๊ฐ tag.media.nodes์ธ ๊ฐ๋ค๋ง ํ์ํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํ
.flatten() // tag.media.nodes์ value๊ฐ์ ๋ฐฐ์ด์ด๊ธฐ์, ๊ณ ์ฐจ์ ๋ฐฐ์ด์ ํ ์ฐจ์ ๋์ด์ฌ๋ ค ๋ฐํ. 2์ฐจ์ -> 1์ฐจ์
.value(); // ๋ก๋ค์ฌ ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ผ ๊ฐ์ฒด๋ก ๋ณํ
# ์ฐธ๊ณ ์๋ฃ
https://www.geeksforgeeks.org/lodash-introduction/?ref=gcse
https://lodash.com/docs/4.17.15
https://runebook.dev/ko/docs/lodash/-index-