Baseline Widely available
flatMap()
㯠Array
ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ãæåã«ãããã³ã°é¢æ°ã使ç¨ãã¦ããããã®è¦ç´ ããããããå¾ãçµæãæ°ããé
åå
ã«å¹³å¦åãã¾ããããã¯ã map()
ã®å¾ã«æ·±ã 1 ã® flat()
ãè¡ãã®ã¨åãã§ãã (arr.map(...args).flat()
)ãããã 2 ã¤ã®ã¡ã½ãããå¥ã
ã«å¼ã³åºãããããããã«å¹ççã§ãã
const arr1 = [1, 2, 1];
const result = arr1.flatMap((num) => (num === 2 ? [2, 2] : 1));
console.log(result);
// Expected output: Array [1, 2, 2, 1]
æ§æ
flatMap(callbackFn)
flatMap(callbackFn, thisArg)
弿°
callbackFn
é åã®ããããã®è¦ç´ ã«å¯¾ãã¦å®è¡ãã颿°ããã®é¢æ°ã¯ãæ°ããé åã®è¦ç´ ãæ ¼ç´ããé åãè¿ãããæ°ããé åã«è¿½å ãã 1 ã¤ã®é å以å¤ã®å¤ãè¿ãã¾ãããã®é¢æ°ã¯ã以ä¸ã®å¼æ°ã§å¼ã³åºããã¾ãã
element
é åã§ç¾å¨å¦çä¸ã®è¦ç´ ã§ãã
index
é åã§ç¾å¨å¦çä¸ã®è¦ç´ ã®ã¤ã³ããã¯ã¹ã§ãã
array
flatMap()
ãå¼ã³åºãããé
åã§ãã
thisArg
çç¥å¯
callbackFn
ãå®è¡ããã¨ãã« this
ã¨ãã¦ä½¿ç¨ããå¤ã§ããå復å¦çã¡ã½ãããåç
§ãã¦ãã ããã
åè¦ç´ ãã³ã¼ã«ããã¯é¢æ°ã®çµæã§ãããæ·±ãã 1 ã«å¹³å¦åãããæ°ããé åã§ãã
解説flatMap()
ã¡ã½ããã¯å復å¦çã¡ã½ããã§ããã³ã¼ã«ããã¯é¢æ°ã®è©³ç´°ãªèª¬æã¯ Array.prototype.map()
ãåç
§ãã¦ãã ãããflatMap()
ã¡ã½ããã¯ãmap(callbackFn, thisArg)
ã®å¾ã«ã® flat(1)
ãå¼ã³åºãã®ã¨åãã§ããè¦ç´ ãã¨ã«ãæ°ããè¦ç´ ã®é
åãçæããã§ããé
åãé£çµãã¦æ°ããé
åãå½¢æãã¾ãã
flatMap()
ã¡ã½ããã¯æ±ç¨çã§ãããã㯠this
å¤ã« length
ããããã£ã¨æ´æ°ãã¼ã®ããããã£ããããã¨ã ããæå¾
ãã¾ãããã ãã callbackFn
ããè¿ãããå¤ã¯ãå¹³å¦åããå ´åã¯é
åã§ãªããã°ãªãã¾ããã
const arr = [1, 2, 3, 4];
arr.flatMap((x) => [x, x * 2]);
// is equivalent to
const n = arr.length;
const acc = new Array(n * 2);
for (let i = 0; i < n; i++) {
const x = arr[i];
acc[i * 2] = x;
acc[i * 2 + 1] = x * 2;
}
// [1, 2, 2, 4, 3, 6, 4, 8]
ãã®å ´åã flatMap
ã®ææ³ã¯ for ã«ã¼ãã®ææ³ãããé
ããã¨ã«æ³¨æãã¦ãã ãããããã¯ãã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ãå¿
è¦ãªä¸æçãªé
åãçæãããããã¨ãè¿ãããé
åã®ãµã¤ãºãé »ç¹ã«å¤æ´ããå¿
è¦ããªãããã§ããããããæè»æ§ã¨å¯èªæ§ãæ±ããããå ´åã«ã¯ã flatMap
ãæ£ãã解決çã¨ãªãå¯è½æ§ãããã¾ãã
map()
㨠flatMap()
const arr1 = [1, 2, 3, 4];
arr1.map((x) => [x * 2]);
// [[2], [4], [6], [8]]
arr1.flatMap((x) => [x * 2]);
// [2, 4, 6, 8]
// only one level is flattened
arr1.flatMap((x) => [[x * 2]]);
// [[2], [4], [6], [8]]
ä¸è¨ã¯ map ã使ç¨ãããã¨ã§ãå®ç¾ã§ãã¾ãããããã§ã¯ flatMap()
ã®ä½¿ç¨æ¹æ³ããããã示ãä¾ãç´¹ä»ãã¾ãã
æç« ã®ãªã¹ãããåèªã®ãªã¹ããçæãã¦ã¿ã¾ãããã
const arr1 = ["it's Sunny in", "", "California"];
arr1.map((x) => x.split(" "));
// [["it's","Sunny","in"],[""],["California"]]
arr1.flatMap((x) => x.split(" "));
// ["it's","Sunny","in", "", "California"]
åºåãªã¹ãã®é·ãã¯å ¥åãªã¹ãã®é·ãã¨ã¯ç°ãªãå ´åããããã¨ã«æ³¨æãã¦ãã ããã
map() ã®ã¢ã¤ãã ã®è¿½å ã¨åé¤flatMap
ã¯ãmap
ä¸ã«ã¢ã¤ãã ã®è¿½å ã¨åé¤ï¼ã¢ã¤ãã ã®æ°ã夿´ï¼ãè¡ãæ¹æ³ã¨ãã¦å©ç¨ã§ãã¾ãã ã¤ã¾ãã常ã«ä¸å¯¾ä¸ã§ã¯ãªããå¤ãã®ã¢ã¤ãã ãå¤ãã®ã¢ã¤ãã ã«ï¼å
¥åãããã¢ã¤ãã ãåå¥ã«æ±ããã¨ã§ï¼ãããã§ããããã«ãªãã¾ãã ãã®æå³ã§ã¯ã filter ã®éã®ãããªåãããã¾ãã åç´ã«ãã¢ã¤ãã ãä¿æããã«ã¯ 1 è¦ç´ ã®é
åãè¿ããã¢ã¤ãã ã追å ããã«ã¯è¤æ°è¦ç´ ã®é
åãè¿ããã¢ã¤ãã ãåé¤ããã«ã¯ 0 è¦ç´ ã®é
åãè¿ãã¾ãã
// ä¾ãã°ããã¹ã¦ã®è² ã®æ°ãåãé¤ãã
// 奿°ãå¶æ°ã¨ 1 ã«åå²ãããã¨ãã¾ãã
const a = [5, 4, -3, 20, 17, -33, -4, 18];
// |\ \ x | | \ x x |
// [4,1, 4, 20, 16, 1, 18]
const result = a.flatMap((n) => {
if (n < 0) {
return [];
}
return n % 2 === 0 ? [n] : [n - 1, 1];
});
console.log(result); // [4, 1, 4, 20, 16, 1, 18]
çé
åã«å¯¾ãã flatMap() ã®ä½¿ç¨
map()
ã¯å¼ã³åºãããã flat()
ã¯è¿ãé
åã®ç©ºã®ã¹ããããç¡è¦ããã®ã§ã callbackFn
ã¯å
ã®é
åã®ç©ºã®ã¹ãããã«å¯¾ãã¦ã¯å¼ã³åºããã¾ããã
console.log([1, 2, , 4, 5].flatMap((x) => [x, x * 2])); // [1, 2, 2, 4, 4, 8, 5, 10]
console.log([1, 2, 3, 4].flatMap((x) => [, x * 2])); // [2, 4, 6, 8]
é
å以å¤ã®ãªãã¸ã§ã¯ãã«å¯¾ãã flatMap() ã®å¼ã³åºã
flatMap()
ã¡ã½ãã㯠this
ã® length
ããããã£ãèªã¿è¾¼ã¿ã次ã«ãã¼ã length
ããå°ããéè² ã®æ´æ°ã§ããåããããã£ã«ã¢ã¯ã»ã¹ãã¾ããã³ã¼ã«ããã¯é¢æ°ã®è¿ãå¤ãé
åã§ãªãå ´åã¯ã常ã«çµæã®é
åã«ç´æ¥è¿½å ããã¾ãã
const arrayLike = {
length: 3,
0: 1,
1: 2,
2: 3,
3: 4, // length ã 3 ã§ãããã flatMap() ããç¡è¦ããã
};
console.log(Array.prototype.flatMap.call(arrayLike, (x) => [x, x * 2]));
// [1, 2, 2, 4, 3, 6]
// ã³ã¼ã«ããã¯ããè¿ãããé
å風ã®ãªãã¸ã§ã¯ãã¯å¹³å¦åãããªã
console.log(
Array.prototype.flatMap.call(arrayLike, (x) => ({
length: 1,
0: x,
})),
);
// [ { '0': 1, length: 1 }, { '0': 2, length: 1 }, { '0': 3, length: 1 } ]
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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