Baseline 2024
Newly available
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
夿³¨ï¼ å¨æäºæµè§å¨çæäºçæ¬ä¸ï¼æ¤æ¹æ³è¢«å®ç°ä¸º Array.prototype.group()
æ¹æ³ãç±äº web å
¼å®¹æ§é®é¢ï¼å®ç°å¨ä»¥éææ¹æ³å®ç°ãåè§æµè§å¨å
¼å®¹æ§è¡¨æ ¼ä»¥è·åæ´å¤ä¿¡æ¯ã
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
对å¯è¿ä»£å¯¹è±¡ä¸çæ¯ä¸ªå ç´ æ§è¡ç彿°ãå®åºè¯¥è¿åä¸ä¸ªå¼ï¼å¯ä»¥è¢«å¼ºå¶è½¬æ¢æå±æ§é®ï¼å符串æ symbolï¼ï¼ç¨äºæç¤ºå½åå ç´ æå±çåç»ãè¯¥å½æ°è¢«è°ç¨æ¶å°ä¼ å ¥ä»¥ä¸åæ°ï¼
element
æ°ç»ä¸å½åæ£å¨å¤ççå ç´ ã
index
æ£å¨å¤ççå ç´ å¨æ°ç»ä¸çç´¢å¼ã
ä¸ä¸ªå¸¦æææåç»å±æ§ç null
ååå¯¹è±¡ï¼æ¯ä¸ªå±æ§é½åé
äºä¸ä¸ªå
å«ç¸å
³ç»å
ç´ çæ°ç»ã
Object.groupBy()
为å¯è¿ä»£å¯¹è±¡ä¸çæ¯ä¸ªå
ç´ è°ç¨ä¸æ¬¡æä¾ç callbackFn
彿°ãåè°å½æ°åºè¿åä¸ä¸ªå符串æ symbolï¼ä¸å±äºè¿ä¸¤ç§ç±»åçå¼ä¼è¢«å¼ºå¶è½¬æ¢ä¸ºå符串ï¼ï¼ç¨äºæç¤ºå
ç´ æå±çåç»ãcallbackFn
çè¿åå¼ä¼è¢«ç¨ä½ Map.groupBy()
è¿åç对象çé®ãæ¯ä¸ªé®é½æä¸ä¸ªç¸å
³èçæ°ç»ï¼å
¶ä¸å
å«åè°å½æ°è¿åç¸åå¼çææå
ç´ ã
è¿åç对象ä¸çå ç´ ååå§å¯è¿ä»£å¯¹è±¡ä¸çå ç´ ç¸åï¼ä¸æ¯æ·±æ·è´ï¼ãæ´æ¹å ç´ çå é¨ç»æå°åæ å¨åå§å¯è¿ä»£å¯¹è±¡åè¿åç对象ä¸ã
ç¤ºä¾ ä½¿ç¨ Object.groupBy()é¦å
ï¼æä»¬å®ä¹ä¸ä¸ªå
å«ä»£è¡¨åç§é£ååºåçå¯¹è±¡çæ°ç»ãæ¯ç§é£å齿ä¸ä¸ª type
åä¸ä¸ª quantity
屿§ã
const inventory = [
{ name: "è¦ç¬", type: "è¬è", quantity: 5 },
{ name: "é¦è", type: "æ°´æ", quantity: 0 },
{ name: "å±±ç¾", type: "è", quantity: 23 },
{ name: "樱æ¡", type: "æ°´æ", quantity: 5 },
{ name: "é±¼", type: "è", quantity: 22 },
];
ä¸é¢çä»£ç æ ¹æ®å
ç´ ç type
屿§çå¼å¯¹å
ç´ è¿è¡åç»ã
const result = Object.groupBy(inventory, ({ type }) => type);
/* ç»ææ¯ï¼
{
è¬è: [
{ name: "è¦ç¬", type: "è¬è", quantity: 5 },
],
æ°´æ: [
{ name: "é¦è", type: "æ°´æ", quantity: 0 },
{ name: "樱æ¡", type: "æ°´æ", quantity: 5 }
],
è: [
{ name: "å±±ç¾", type: "è", quantity: 23 },
{ name: "é±¼", type: "è", quantity: 22 }
]
}
*/
ç®å¤´å½æ°æ¯æ¬¡è¢«è°ç¨æ¶é½åªè¿åæ¯ä¸ªæ°ç»å
ç´ ç type
屿§ã请注æï¼å½æ°åæ° { type }
æ¯ä¸ä¸ªå½æ°åæ°ç对象解æè¯æ³çåºæ¬ç¤ºä¾ãè¿ä¼è§£æä¼ éä¸ºåæ°ç对象ç type
屿§ï¼å¹¶å°å
¶èµå¼ç»å½æ°ä½ä¸å为 type
çåéãè¿æ¯ä¸ç§éå¸¸ç®æ´ç访é®å½æ°ä¸ç¸å
³å
ç´ çå¼çæ¹å¼ã
æä»¬è¿å¯ä»¥åå»ºæ ¹æ®å
ç´ çä¸ä¸ªæå¤ä¸ªå±æ§ä¸ç弿¨æçåç»ãä¸é¢æ¯ä¸ä¸ªé常类似ç示ä¾ï¼æ ¹æ® quantity
åæ®µçå¼å°é¡¹ç®å为 ok
æ restock
ç»ã
function myCallback({ quantity }) {
return quantity > 5 ? "ok" : "restock";
}
const result2 = Object.groupBy(inventory, myCallback);
/* ç»ææ¯ï¼
{
restock: [
{ name: "è¦ç¬", type: "è¬è", quantity: 5 },
{ name: "é¦è", type: "æ°´æ", quantity: 0 },
{ name: "樱æ¡", type: "æ°´æ", quantity: 5 }
],
ok: [
{ name: "å±±ç¾", type: "è", quantity: 23 },
{ name: "é±¼", type: "è", quantity: 22 }
]
}
*/
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4