Object.groupBy()
Baseline
2024
Newly available
Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
ì°¸ê³ :
ì¼ë¶ ë¸ë¼ì°ì ì í¹ì ë²ì ììë ì´ ë©ìëê° Array.prototype.group() ë©ìëë¡ êµ¬íëììµëë¤. ì¹ í¸íì± ë¬¸ì ë¡ ì¸í´ íì¬ë ì ì ë©ìëë¡ êµ¬íëììµëë¤. ìì¸í ë´ì©ì ë¸ë¼ì°ì í¸íì± í를 íì¸íì¸ì.
Object.groupBy() ì ì ë©ìëë ì ê³µë ì½ë°± í¨ìê° ë°ííë 문ìì´ ê°ì ë°ë¼ 주ì´ì§ ìí ê°ë¥í ì¬ë¬ ìì를 그룹íí©ëë¤. ë°íë ê°ì²´ë ê° ê·¸ë£¹ì ëí´ ë³ëì ìì±ì ê°ì§ë©°, ì´ ìì±ë¤ì í´ë¹ 그룹ì ììë¤ì í¬í¨íë ë°°ì´ì ë´ê³ ììµëë¤.
ì´ ë©ìëë 그룹 ì´ë¦ì 문ìì´ë¡ ííí ì ìì ë ì¬ì©í´ì¼ í©ëë¤. ë§ì½ ììì ê°ì í¤ë¡ ì¬ì©íì¬ ììë¤ì 그룹íí´ì¼ íë¤ë©´, ëì Map.groupBy()를 ì¬ì©íì¸ì.
ìëí´ ë³´ê¸°
const inventory = [
{ name: "asparagus", type: "vegetables", quantity: 9 },
{ name: "bananas", type: "fruit", quantity: 5 },
{ name: "goat", type: "meat", quantity: 23 },
{ name: "cherries", type: "fruit", quantity: 12 },
{ name: "fish", type: "meat", quantity: 22 },
];
const restock = { restock: true };
const sufficient = { restock: false };
const result = Object.groupBy(inventory, ({ quantity }) =>
quantity < 6 ? "restock" : "sufficient",
);
console.log(result.restock);
// [{ name: "bananas", type: "fruit", quantity: 5 }]
구문
Object.groupBy(items, callbackFn)
매ê°ë³ì
items-
ììê° ê·¸ë£¹í ë ìí ê°ë¥(
Arrayê°ì). callbackFn-
ê° ìí ê°ë¥ ììì ëí´ ì¤íí í¨ì. íì¬ ììì 그룹ì ê°ë¦¬í¤ë ìì± í¤(문ìì´ í¹ì ì¬ë³¼)를 ë°ëì ë°íí´ì¼ í©ëë¤. ì´ í¨ìë ë¤ìì ììì í¨ê» í¸ì¶ë©ëë¤.
ë°í ê°
ì°ê´ë 그룹ì ìì를 ê°ì§ë ë°°ì´ì´ ê°ê°ì ììì ì ì¥ëì´ ìë null-íë¡í íì
ê°ì²´
ì¤ëª
Object.groupBy()ë ìí ê°ë¥í ê° ììì ëí´ ì ê³µë callbackFn í¨ì를 í ë²ì© í¸ì¶í©ëë¤. ì´ ì½ë°± í¨ìë ê´ë ¨ ììì 그룹ì ëíë´ë 문ìì´ ëë ì¬ë³¼ì ë°íí´ì¼ í©ëë¤ (문ìì´ì´ë ì¬ë³¼ì´ ìë ê°ë¤ì 문ìì´ë¡ ê°ì ë³íë©ëë¤). callbackFnì´ ë°íí ê°ë¤ì Map.groupBy()ê° ë°ííë ê°ì²´ì í¤ë¡ ì¬ì©ë©ëë¤. ê° í¤ë ì½ë°±ì´ ëì¼í ê°ì ë°íí 모ë ììë¤ì í¬í¨íë ë°°ì´ê³¼ ì°ê´ë©ëë¤.
ë°íë ê°ì²´ì ì본 ìí ê°ë¥í ì¬ë¬ ììë ëì¼í©ëë¤ (ê¹ì ë³µì¬ê° ìëëë¤). ììë¤ì ë´ë¶ 구조를 ë³ê²½íë©´ ì본 ìí ê°ë¥ ììì ë°íë ê°ì²´ 모ëì ê·¸ ë³ê²½ì´ ë°ìë©ëë¤.
ìì
>Object.groupBy() ì¬ì©í기
첫 ë²ì§¸ë¡ ë¤ìí ììì ì¸ë²¤í 리를 íííë ê°ì²´ë¥¼ ê°ì§ë ë°°ì´ì ì ìíê² ìµëë¤. ê° ììì typeê³¼ quantityê° ììµëë¤.
const inventory = [
{ name: "asparagus", type: "vegetables", quantity: 5 },
{ name: "bananas", type: "fruit", quantity: 0 },
{ name: "goat", type: "meat", quantity: 23 },
{ name: "cherries", type: "fruit", quantity: 5 },
{ name: "fish", type: "meat", quantity: 22 },
];
ììì type ìì±ì ê°ì ë°ë¼ ìì를 그룹íí©ëë¤.
const result = Object.groupBy(inventory, ({ type }) => type);
/* Result is:
{
vegetables: [
{ name: 'asparagus', type: 'vegetables', quantity: 5 },
],
fruit: [
{ name: "bananas", type: "fruit", quantity: 0 },
{ name: "cherries", type: "fruit", quantity: 5 }
],
meat: [
{ name: "goat", type: "meat", quantity: 23 },
{ name: "fish", type: "meat", quantity: 22 }
]
}
*/
íì´í í¨ìë í¸ì¶ë ëë§ë¤ ê° ë°°ì´ ììì typeì ë°íí©ëë¤. í¨ì ì¸ì { type }ì í¨ì ì¸ì를 ìí ê°ì²´ 구조 ë¶í´ 문ë²ì 기본ì ì¸ ììë¼ë ì ëª
ì¬íì기 ë°ëëë¤. ì´ë 매ê°ë³ìë¡ ì ë¬ë ê°ì²´ìì type ìì±ì 꺼ë´ì´ í¨ì 본문 ë´ìì typeì´ë¼ë ì´ë¦ì ë³ìì í ë¹í©ëë¤.
ì´ë í¨ì ë´ìì ììë¤ì ê´ë ¨ ê°ì ì ê·¼íë ë§¤ì° ê°ê²°í ë°©ë²ì ëë¤.
ëí ììë¤ì íë ì´ìì ìì± ê°ì¼ë¡ë¶í° ì¶ë¡ ë 그룹ì ë§ë¤ ì ììµëë¤. ìëë ë§¤ì° ì ì¬í ììë¡, quantity íëì ê°ì 기ë°ì¼ë¡ í목ë¤ì ok ëë restock 그룹ì¼ë¡ ëëë ë°©ë²ì ë³´ì¬ì¤ëë¤.
function myCallback({ quantity }) {
return quantity > 5 ? "ok" : "restock";
}
const result2 = Object.groupBy(inventory, myCallback);
/* Result is:
{
restock: [
{ name: "asparagus", type: "vegetables", quantity: 5 },
{ name: "bananas", type: "fruit", quantity: 0 },
{ name: "cherries", type: "fruit", quantity: 5 }
],
ok: [
{ name: "goat", type: "meat", quantity: 23 },
{ name: "fish", type: "meat", quantity: 22 }
]
}
*/
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.groupby> |