Baseline 2025
Newly available
flatMap()
㯠Iterator
ã¤ã³ã¹ã¿ã³ã¹ã®ç®ç度ã§ãæ°ããã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ãªãã¸ã§ã¯ããè¿ãã¾ããããã¯å
ã®ã¤ãã¬ã¼ã¿ã¼ã®ããããã®è¦ç´ ãåããããããããã³ã°é¢æ°ã«ãã£ã¦èµ°æ»ãããããã³ã°é¢æ°ããè¿ãããï¼ä»ã®ã¤ãã¬ã¼ã¿ã¼ãå復å¯è½ãªãã¸ã§ã¯ãã«å«ã¾ãã¦ããï¼è¦ç´ ãè¿ãã¾ãã
callbackFn
ãã®ã¤ãã¬ã¼ã¿ã¼ãçæãããã¹ã¦ã®è¦ç´ ã«å¯¾ãã¦å®è¡ãã颿°ã§ãããã㯠flatMap()
ããè¿ãããè¦ç´ ãçºçãããã¤ãã¬ã¼ã¿ã¼ã¾ãã¯å復å¯è½ãªãã¸ã§ã¯ããè¿ãã¾ãããªãã Array.prototype.flatMap()
ã®å ´åã¨ã¯ç°ãªããã¤ãã¬ã¼ã¿ã¼ã¾ãã¯å復å¯è½ãªãã¸ã§ã¯ãã§ãªãåä¸ã®å¤ãè¿ãã¦ã¯ããã¾ããããã®é¢æ°ã¯ã以ä¸ã®å¼æ°ã¨ã¨ãã«å¼ã³åºããã¾ãã
element
å¦çä¸ã®ç¾å¨ã®è¦ç´ ã§ãã
index
å¦çä¸ã®ç¾å¨ã®è¦ç´ ã®ã¤ã³ããã¯ã¹ã§ãã
æ°ããã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ãªãã¸ã§ã¯ãã§ããæåã«ã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ã® next()
ã¡ã½ãããå¼ã³åºãããã¨ããã®å
ã¨ãªãã¤ãã¬ã¼ã¿ã¼ã«ãã£ã¦çæãããæåã®è¦ç´ ã«å¯¾ã㦠callbackFn
ãå¼ã³åºãããã¤ãã¬ã¼ã¿ã¼ã¾ãã¯å復å¯è½ãªãªãã¸ã§ã¯ãã§ããè¿å¤ãã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ã«ãã£ã¦é ã«çæããã¾ãï¼yield*
ã®ããã«ï¼ãåã®è¦ç´ ã callbackFn
ã«ãã£ã¦è¿ãããå¾ã次ã®è¦ç´ ãåºç¤ã¨ãªãã¤ãã¬ã¼ã¿ã¼ããåå¾ããã¾ããåºç¤ã¨ãªãã¤ãã¬ã¼ã¿ã¼ãå®äºããã¨ãã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ãå®äºãã¾ãï¼next()
ã¡ã½ãã㯠{ value: undefined, done: true }
ãçæãã¾ãï¼ã
TypeError
callbackFn
ãã¤ãã¬ã¼ã¿ã¼ãå復å¯è½ãªå¤ã§ã¯ãªãå¤ããããã¯æååããªããã£ããè¿ããå ´åã«çºçãã¾ãã
flatMap
ã¯ãã³ã¼ã«ããã¯é¢æ°ããã¤ãã¬ã¼ã¿ã¼ã¾ãã¯å復å¯è½ãªãã¸ã§ã¯ãã® 2 種é¡ã®è¿å¤ãåãå
¥ãã¾ãããããã¯ã Iterator.from()
ã¨åãæ¹æ³ã§å¦çããã¾ããè¿å¤ãå復å¯è½ãªãã¸ã§ã¯ãã®å ´åã [Symbol.iterator]()
ã¡ã½ãããå¼ã³åºãããè¿å¤ã使ç¨ããã¾ãããã以å¤ã®å ´åãè¿å¤ã¯ã¤ãã¬ã¼ã¿ã¼ã¨ãã¦æ±ããããã® next()
ã¡ã½ãããå¼ã³åºããã¾ãã
[1, 2, 3]
.values()
.flatMap((x) => {
let itDone = false;
const it = {
next() {
if (itDone) {
return { value: undefined, done: true };
}
itDone = true;
return { value: x, done: false };
},
};
switch (x) {
case 1:
// ã¤ãã¬ã¼ã¿ã¼ã§ã¯ãªãå復å¯è½ãªãã¸ã§ã¯ã
return { [Symbol.iterator]: () => it };
case 2:
// å復å¯è½ãªãã¸ã§ã¯ãã§ã¯ãªãã¤ãã¬ã¼ã¿ã¼
return it;
case 3:
// å復å¯è½ãªã¤ãã¬ã¼ã¿ã¼ã¯ãå復å¯è½ãªãã¸ã§ã¯ãã¨ãã¦æ±ããã
return {
...it,
[Symbol.iterator]() {
console.log("Symbol.iterator ãå¼ã³åºããã¾ãã");
return it;
},
};
}
})
.toArray();
// "Symbol.iterator ãå¼ã³åºããã¾ãã" ã¨ãã°åºå
// [1, 2, 3] ãè¿ã
ä¾ ãããã®ãã¼ã¸
以ä¸ã®ä¾ã¯ 2 ã¤ã® Map
ãªãã¸ã§ã¯ãã 1 ã¤ã«ãã¼ã¸ãã¾ãã
const map1 = new Map([
["a", 1],
["b", 2],
["c", 3],
]);
const map2 = new Map([
["d", 4],
["e", 5],
["f", 6],
]);
const merged = new Map([map1, map2].values().flatMap((x) => x));
console.log(merged.get("a")); // 1
console.log(merged.get("e")); // 5
ããã«ããããããã®ä¸èº«ã®ä¸æã³ãã¼ã使ãããã®ãé¿ãããã¨ãã§ãã¾ãã Array.prototype.flatMap()
ã¯é
åã®ã¿ãå¹³å¦åããå復å¯è½ãªãã¸ã§ã¯ãã¯å¹³å¦åããªããããé
å [map1, map2]
ã¯æåã®æ®µéã§ï¼Array.prototype.values()
ã使ç¨ãã¦ï¼ã¤ãã¬ã¼ã¿ã¼ã«å¤æããå¿
è¦ããããã¨ã«æ³¨æãã¦ãã ããã
new Map([map1, map2].flatMap((x) => x)); // Map(1) {undefined => undefined}
æååã®è¿å´
æååã¯å復å¯è½ãªãã¸ã§ã¯ãã§ããã flatMap()
ã¯ãã®ä»æ§ä¸ã callbackFn
ããè¿ãããæååããªããã£ããæå¦ãã¾ããããã¯ãã³ã¼ããã¤ã³ãã«ããå復å¦çã®æåããã¦ã¼ã¶ã¼ã®æå³ã«æ²¿ããªããã¨ãå¤ãããã§ãã
[1, 2, 3]
.values()
.flatMap((x) => String(x))
.toArray(); // TypeError: Iterator.prototype.flatMap called on non-object
代ããã«é åã§ã©ããããæååå ¨ä½ã 1 ã¤ã¨ãã¦è¿ãããã«ãããã¨ãã§ãã¾ãã
[1, 2, 3]
.values()
.flatMap((x) => [String(x)])
.toArray(); // ['1', '2', '3']
ã¾ãã¯ãã³ã¼ããã¤ã³ãã§å復å¦çããåä½ãæå³ãã¦ããå ´åã¯ã Iterator.from()
ã使ç¨ãã¦ããããæ£è¦ã®ã¤ãã¬ã¼ã¿ã¼ã«å¤æãããã¨ãã§ãã¾ãã
[1, 2, 3]
.values()
.flatMap((x) => Iterator.from(String(x * 10)))
.toArray();
// ['1', '0', '2', '0', '3', '0']
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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