Array.prototype.reduce()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
reduce() 㯠Array ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ãé
åã®ããããã®è¦ç´ ã«å¯¾ãã¦ãã¦ã¼ã¶ã¼ãæä¾ããã縮å°ãã³ã¼ã«ããã¯é¢æ°ãå¼ã³åºãã¾ãããã®éãç´åã®è¦ç´ ã®è¨ç®çµæã®è¿å¤ã渡ãã¾ããé
åã®ãã¹ã¦ã®è¦ç´ ã«å¯¾ãã¦ã縮å°ãã³ã¼ã«ããã¯é¢æ°ãå®è¡ããæçµçµæã¯ãåä¸ã®å¤ã¨ãªãã¾ãã
ã³ã¼ã«ããã¯ã®ååå®è¡æã«ã¯ãç´åã®è¨ç®ã®è¿å¤ãã¯åå¨ãã¾ãããåæå¤ãä¸ããããå ´åã¯ã代ããã«ä½¿ç¨ããããã¨ãããã¾ããããã§ãªãå ´åã¯ãé åã®è¦ç´ 0 ãåæå¤ã¨ãã¦ä½¿ç¨ãããæ¬¡ã®è¦ç´ ï¼0 ã®ä½ç½®ã§ã¯ãªã 1 ã®ä½ç½®ï¼ããå復å¦çãéå§ããã¾ãã
試ãã¦ã¿ã¾ããã
const array = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array.reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue,
);
console.log(sumWithInitial);
// äºæ³ãããçµæ: 10
æ§æ
reduce(callbackFn)
reduce(callbackFn, initialValue)
弿°
callbackFn-
é åã®åè¦ç´ ã«å¯¾ãã¦å®è¡ããã颿°ã§ãããã®è¿å¤ã¯ã次ã«
callbackFnãå¼ã³åºãéã®accumulator弿°ã®å¤ã«ãªãã¾ããæå¾ã®å¼ã³åºãã§ã¯ãè¿å¤ã¯reduce()ã®è¿å¤ã¨ãªãã¾ãããã®é¢æ°ã¯ä»¥ä¸ã®å¼æ°ã§å¼ã³åºããã¾ããaccumulator-
ååã®
callbackFnã®å¼ã³åºãçµæã®å¤ã§ããååã®å¼ã³åºãã§ã¯initialValueãæå®ããã¦ããå ´åã¯ãã®å¤ãããã§ãªãå ´åã¯array[0]ã®å¤ã§ãã currentValue-
ç¾å¨ã®è¦ç´ ã®å¤ã§ããååã®å¼ã³åºãã§ã¯
initialValueãæå®ãããå ´åã¯array[0]ã®å¤ã§ãããããã§ãªãå ´åã¯array[1]ã®å¤ã§ãã currentIndex-
currentValueã®ä½ç½®ã§ããååã®å¼ã³åºãã§ã¯ãinitialValueãæå®ãããå ´åã¯0ãããã§ãªãå ´åã¯1ã§ãã array-
reduce()ãå¼ã³åºãããé åã§ãã
initialValueçç¥å¯-
ã³ã¼ã«ããã¯ãæåã«å¼ã³åºãããæã«
accumulatorãåæåãããå¤ã§ããinitialValueãæå®ãããå ´åãcallbackFnã¯é åã®æåã®å¤ãcurrentValueã¨ãã¦å®è¡ãéå§ãã¾ãã ããinitialValueãæå®ãããªãã£ãå ´åãaccumulatorã¯é åã®æåã®å¤ã«åæåãããcallbackFnã¯é åã® 2 ã¤ç®ã®å¤ãcurrentValueã¨ãã¦å®è¡ãéå§ãã¾ãããã®å ´åãé åã空ã§ããã°ï¼accumulatorã¨ãã¦è¿ãæåã®å¤ããªããã°ï¼ã¨ã©ã¼ãçºçãã¾ãã
è¿å¤
é åå ¨ä½ã«ããã£ã¦ã縮å°ãã³ã¼ã«ããã¯é¢æ°ãå®è¡ããçµæã®å¤ã§ãã
ä¾å¤
TypeError-
é åã«è¦ç´ ããªãããã¤
initialValueãæä¾ãããªãã£ãå ´åã«çºçãã¾ãã
解説
reduce() ã¡ã½ããã¯å復å¦çã¡ã½ããã§ããã縮å°ãã³ã¼ã«ããã¯é¢æ°ãé
åã«å«ã¾ããåè¦ç´ ã«å¯¾ãã¦æé ã«ä¸åº¦ãã¤å¼ã³åºãããã®çµæãåä¸ã®å¤ã«ç©ç®ãã¾ããæ¯åã callbackFn ã®è¿å¤ã¯æ¬¡åã® callbackFn ã®å¼ã³åºãã§ accumulator ã¨ãã¦æ¸¡ããã¾ããæçµç㪠accumulator ã®å¤ï¼é
åã®æçµå復å¦çã«ãã㦠callbackFn ããè¿ãããå¤ï¼ã reduce() ã®è¿å¤ã¨ãªãã¾ãããããã®ã¡ã½ãããä¸è¬çã«ã©ã®ããã«åä½ããã®ãã«ã¤ãã¦ã®è©³ç´°ã¯ãå復å¦çã¡ã½ããã®ç¯ãã覧ä¸ããã
callbackFn ã¯å¤ãå²ãå½ã¦ããã¦ããé
åã¤ã³ããã¯ã¹ã«å¯¾ãã¦ã®ã¿å¼ã³åºããã¾ããçé
åã®ç©ºã®ã¹ãããã«å¯¾ãã¦ã¯å¼ã³åºããã¾ããã
ä»ã®å復å¦çã¡ã½ããã¨ã¯ç°ãªãã reduce() 㯠thisArg 弿°ãåãå
¥ãã¾ããã callbackFn ã¯å¸¸ã« undefined ã this ã¨ãã¦å¼ã³åºããã callbackFn ã峿 ¼ã¢ã¼ãã§ãªãå ´å㯠globalThis ã«ç½®ãæãããã¾ãã
reduce() ã¯é¢æ°åããã°ã©ãã³ã°ã®ä¸å¿çãªæ¦å¿µã§ããããã§ã¯ãã©ã®å¤ãå¤ç°ããããã¨ãã§ããªãã®ã§ãé
åã®ãã¹ã¦ã®å¤ãç©ç®ããã«ã¯ãå復å¦çã®ãã³ã«æ°ããç©ç®å¤ãè¿ããªããã°ãªãã¾ããããã®ç´æäºã¯ JavaScript ã® reduce() ã«ãå½ã¦ã¯ã¾ãã¾ããã¹ãã¬ããæ§æãä»ã®å¯è½ãªéãã³ãã¼ããæ¹æ³ã使ç¨ãã¦ãæ¢åã®ãã®ã夿´ããã«ãã¢ãã¥ã¼ã ã¬ã¼ã¿ã¼ã¨ãã¦æ°ããé
åããªãã¸ã§ã¯ãã使ãã¹ããªã®ã§ãããããã¢ãã¥ã¼ã ã¬ã¼ã¿ã¼ãã³ãã¼ãã代ããã«å¤åããããã¨ã«ããå ´åãã³ã¼ã«ããã¯ã§å¤æ´ãããªãã¸ã§ã¯ããè¿ããã¨ãå¿ããªãã§ãã ããããããªããã°ã次ã®å復å¦çã§ undefined ãåãåããã¨ã«ãªãã¾ãããã ããã¢ãã¥ã ã¬ã¼ã¿ã¼ãã³ãã¼ããã¨ãã¡ã¢ãªã¼ä½¿ç¨éãå¢å ããããã©ã¼ãã³ã¹ãä½ä¸ããå¯è½æ§ããããã¨ã«æ³¨æãã¦ãã ããã詳細ã«ã¤ãã¦ã¯ã reduce() ã使ç¨ãã¹ãã§ãªãå ´åç¨ããªãå ´å ãåç
§ãã¦ãã ããããã®ãããªå ´åãããã©ã¼ãã³ã¹ã®ä½ä¸ãã³ã¼ãã®å¯èªæ§ã®ä½ä¸ãé¿ããããã«ã代ããã« for ã«ã¼ãã使ç¨ãããã¨ããå§ããã¾ãã
reduce() ã¡ã½ããã¯æ±ç¨çã§ãããã㯠this å¤ã« length ããããã£ã¨æ´æ°ãã¼ã®ããããã£ããããã¨ã ããæå¾
ãã¾ãã
ç¨ãªå ´å
é
åãï¼ä½ç½®ã«é¢ãããï¼ 1 ã¤ã®è¦ç´ ããæããã initialValue ãæå®ãããªãã£ãå ´åãã¾ã㯠initialValue ãæå®ããã¦ãã¦ãé
åã空ã ã£ãå ´åã callbackFn ã¯å®è¡ãããã«è¦ç´ ãè¿å´ããã¾ãã
initialValue ãæä¾ãããé
åã空ã§ãªãå ´åã reduce ã¡ã½ããã¯å¸¸ã« 0 ã®ä½ç½®ããã³ã¼ã«ããã¯é¢æ°ãå¼ã³åºãå§ãã¾ãã
initialValue ãæä¾ãããªãã£ãå ´åã reduce ã¡ã½ããã¯ã次ã®ä¾ã«ç¤ºãããã«ãé·ãã 1 ãã大ããé
åãé·ãã 1 ã®é
åãé·ãã 0 ã®é
åã«å¯¾ãã¦ç°ãªãåä½ããã¾ãã
const getMax = (a, b) => Math.max(a, b);
// ã³ã¼ã«ããã¯ã¯ 0 ã®ä½ç½®ããé
åå
ã®å
¨è¦ç´ ã«å¯¾ãã¦å¼ã³åºããã
[1, 100].reduce(getMax, 50); // 100
[50].reduce(getMax, 10); // 50
// ã³ã¼ã«ããã¯ã¯ 1 ã®ä½ç½®ã«å¯¾ã㦠1 度ã ãå¼ã³åºããã
[1, 100].reduce(getMax); // 100
// ã³ã¼ã«ããã¯ã¯å¼ã³åºãããªã
[50].reduce(getMax); // 50
[].reduce(getMax, 1); // 1
[].reduce(getMax); // TypeError
ä¾
>åæå¤ããªãå ´åã® reduce() ã®åä½
ä¸è¨ã®ã³ã¼ãã¯ãåæå¤ããªãå ´åã«é
åã« reduce() ãå¼ã³åºããã¨ãã«ä½ãèµ·ãããã示ãã¾ãã
const array = [15, 16, 17, 18, 19];
function reducer(accumulator, currentValue, index) {
const returns = accumulator + currentValue;
console.log(
`accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`,
);
return returns;
}
array.reduce(reducer);
ã³ã¼ã«ããã¯é¢æ°ã¯ 4 åå¼ã³åºãããååã®å¼æ°ã®å 容ã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
accumulator |
currentValue |
index |
è¿å¤ | |
|---|---|---|---|---|
| æåã®å¼ã³åºã | 15 |
16 |
1 |
31 |
| 2 çªç®ã®å¼ã³åºã | 31 |
17 |
2 |
48 |
| 3 çªç®ã®å¼ã³åºã | 48 |
18 |
3 |
66 |
| 4 çªç®ã®å¼ã³åºã | 66 |
19 |
4 |
85 |
array ã®è¦ç´ ã¯å¦çä¸ã«å¤åãã¾ããã常㫠[15, 16, 17, 18, 19] ã§ãã reduce() ã®è¿å¤ã¯ãã³ã¼ã«ããã¯å¼ã³åºãã®æå¾ã®è¿å¤ã§ãã (85) ã¨ãªãã§ãããã
åæå¤ãããå ´åã® reduce() ã®åä½
ããã§ã¯ãåãã¢ã«ã´ãªãºã ã§åãé
åãæ¸ããã¾ããã reduce() ã® 2 çªç®ã®å¼æ°ã¨ã㦠10 ã¨ãã initialValue ãæ¸¡ãã¾ãã
[15, 16, 17, 18, 19].reduce(
(accumulator, currentValue) => accumulator + currentValue,
10,
);
ã³ã¼ã«ããã¯ã¯ 5 åå¼ã³åºãããããããã®å¼ã³åºãã«ããã弿°ã¨è¿å¤ã¯æ¬¡ã®ããã«ãªãã¾ãã
accumulator |
currentValue |
index |
è¿å¤ | |
|---|---|---|---|---|
| æåã®å¼ã³åºã | 10 |
15 |
0 |
25 |
| 2 çªç®ã®å¼ã³åºã | 25 |
16 |
1 |
41 |
| 3 çªç®ã®å¼ã³åºã | 41 |
17 |
2 |
58 |
| 4 çªç®ã®å¼ã³åºã | 58 |
18 |
3 |
76 |
| 5 çªç®ã®å¼ã³åºã | 76 |
19 |
4 |
95 |
ãã®å ´åã® reduce() ã®è¿å¤ã¯ 95 ã¨ãªãã¾ãã
ãªãã¸ã§ã¯ãé åã®å¤ã®åè¨å¤
ãªãã¸ã§ã¯ãã®é
åã«å«ã¾ããå¤ã®åè¨å¤ãåºãã«ã¯ããã¹ã¦ã®é
ç®ã颿°å
ã§åå¾ã§ããããã«ããããã« initialValue ãæå®ããå¿
è¦ãããã¾ãã
const objects = [{ x: 1 }, { x: 2 }, { x: 3 }];
const sum = objects.reduce(
(accumulator, currentValue) => accumulator + currentValue.x,
0,
);
console.log(sum); // logs 6
颿°ãç´åã«ãã¤ãæ¥ç¶
pipe 颿°ã¯ä¸é£ã®é¢æ°ãåãåããæ°ãã颿°ãè¿ãã¾ããæ°ãã颿°ã弿°ã§å¼ã³åºãããã¨ãä¸é£ã®é¢æ°ãé çªã«å¼ã³åºããããããããåå颿°ã®è¿å¤ãåãåãã¾ãã
const pipe =
(...functions) =>
(initialValue) =>
functions.reduce((acc, fn) => fn(acc), initialValue);
// åæã«ä½¿ç¨ããç´ æ
const double = (x) => 2 * x;
const triple = (x) => 3 * x;
const quadruple = (x) => 4 * x;
// ç¹å®ã®å¤ã®ä¹ç®ã®ããã®åæé¢æ°
const multiply6 = pipe(double, triple);
const multiply9 = pipe(triple, triple);
const multiply16 = pipe(quadruple, quadruple);
const multiply24 = pipe(double, triple, quadruple);
// ä½¿ç¨æ¹æ³
multiply6(6); // 36
multiply9(9); // 81
multiply16(16); // 256
multiply24(10); // 240
ãããã¹ãç´åã«å®è¡
ãããã¹ã·ã¼ã±ã³ã¹ã¯ãéåæã§è¡ããããã¨ãé¤ãã°ãåºæ¬çã«ååã®ç¯ã§ç¤ºããã颿°ã®ãã¤ãæ¥ç¶ã§ãã
// ãã¤ãã¨æ¯è¼ããã¨ã fn(acc) 㯠acc.then(fn) ã«å¤æ´ããã
// initialValue ã¯ãããã¹ã§ãããã¨ãä¿è¨¼ããã¾ãã
const asyncPipe =
(...functions) =>
(initialValue) =>
functions.reduce((acc, fn) => acc.then(fn), Promise.resolve(initialValue));
// åæã«ä½¿ç¨ããæ§æè¦ç´
const p1 = async (a) => a * 5;
const p2 = async (a) => a * 2;
// æ§æããã颿°ã¯ãæçµçã«ãã¹ã¦ãããã¹ã§å
ã¾ããããã
// ãããã¹ä»¥å¤ãè¿ããã¨ãã§ãã¾ãã
const f3 = (a) => a * 3;
const p4 = async (a) => a * 4;
asyncPipe(p1, p2, f3, p4)(10).then(console.log); // 1200
asyncPipe 㯠async/await ã使ç¨ãã¦å®è£
ãããã¨ãã§ãã pipe ã¨ã®é¡ä¼¼æ§ããããã示ãã¦ãã¾ãã
const asyncPipe =
(...functions) =>
(initialValue) =>
functions.reduce(async (acc, fn) => fn(await acc), initialValue);
reduce() ãçé åã§ä½¿ç¨
reduce() ã¯çé
åã®æ¬ è½ãã¦ããè¦ç´ ãã¹ããããã¾ãããå¤ã undefined ã®å ´åã¯ã¹ããããã¾ããã
console.log([1, 2, , 4].reduce((a, b) => a + b)); // 7
console.log([1, 2, undefined, 4].reduce((a, b) => a + b)); // NaN
é å以å¤ã®ãªãã¸ã§ã¯ãã«å¯¾ãã reduce() ã®å¼ã³åºã
reduce() ã¡ã½ãã㯠this ã® length ããããã£ãèªã¿è¾¼ã¿ã次ã«ãã¼ã length ããå°ããéè² ã®æ´æ°ã§ããåããããã£ã«ã¢ã¯ã»ã¹ãã¾ãã
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 99, // length ã 3 ã§ãããã reduce() ããã¯ç¡è¦ããã
};
console.log(Array.prototype.reduce.call(arrayLike, (x, y) => x + y));
// 9
reduce() ã使ç¨ãã¹ãã§ãªãå ´å
reduce() ã®ãããªå¤ç®çã®é«æ¬¡é¢æ°ã¯å¼·åã§ãããç¹ã«çµé¨ã®æµ
ã JavaScript ã®éçºè
ã«ã¨ã£ã¦ã¯çè§£ãã«ããå ´åãããã¾ããä»ã®é
åã¡ã½ããã使ç¨ããæ¹ãã³ã¼ããæå¿«ã«ãªãå ´åãéçºè
㯠reduce() ã使ç¨ããä»ã®å©ç¹ã¨èªã¿åãå¯è½æ§ã®ãã¬ã¼ããªããæ¯è¼æ¤è¨ããå¿
è¦ãããã¾ãã
reduce() ã¯å¸¸ã« for...of ã«ã¼ãã¨åçã§ãããä¸ä½ã¹ã³ã¼ãã®å¤æ°ã夿´ãã代ããã«ãåå復å¦çã§æ°ããå¤ãè¿ããã¨ã«æ³¨æãã¦ãã ããã
const val = array.reduce((acc, cur) => update(acc, cur), initialValue);
// ããã¯ã次ã®ãã®ã¨åçã§ã
let val = initialValue;
for (const cur of array) {
val = update(val, cur);
}
åè¿°ã®ããã«ã人ã
ã reduce() ã使ç¨ãããã¨æãçç±ã¯ããã¼ã¿ãä¸å¤ã¨ãã颿°åããã°ã©ãã³ã°ã®ææ³ã模å£ããããã§ãããããã£ã¦ãã¢ãã¥ã ã¬ã¼ã¿ã¼ã®ä¸å¤æ§ãæ¯æããéçºè
ã¯ã次ã®ããã«å復å¦çãã¨ã«ã¢ãã¥ã ã¬ã¼ã¿ã¼å
¨ä½ãã³ãã¼ããå¾åãããã¾ãã
const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"];
const countedNames = names.reduce((allNames, name) => {
const currCount = Object.hasOwn(allNames, name) ? allNames[name] : 0;
return {
...allNames,
[name]: currCount + 1,
};
}, {});
ãã®ã³ã¼ãã¯éå¹ççã§ããã¨ããã®ããåã¤ãã¬ã¼ã¿ã¼ã¯ allNames ãªãã¸ã§ã¯ãå
¨ä½ãã³ãã¼ããå¿
è¦ããããããã¯åºæã®ååãããã¤ãããã«ãã£ã¦ãµã¤ãºã大ãããªã£ã¦ãã¾ãããã§ãããã®ã³ã¼ãã¯ææªã®å ´åã N ã names ã®é·ãã ã¨ãã㨠O(N^2) ã®ããã©ã¼ãã³ã¹ã«ãªãã¾ãã
åå復å¦çã§ allNames ãªãã¸ã§ã¯ãã夿´ããã»ããããããã§ãããããããã allNames ããããã«ãã夿´ãããã®ã§ããã°ã reduce() ã for ã«ã¼ãã«å¤æããæ¹ãããæç¢ºã§ãã
const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"];
const countedNames = names.reduce((allNames, name) => {
const currCount = allNames[name] ?? 0;
allNames[name] = currCount + 1;
// allNames ãè¿ããªãã¨ã次ã®å復å¦çã§ undefined ãåãåã
return allNames;
}, Object.create(null));
const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"];
const countedNames = Object.create(null);
for (const name of names) {
const currCount = countedNames[name] ?? 0;
countedNames[name] = currCount + 1;
}
ãããã£ã¦ãã¢ãã¥ã ã¬ã¼ã¿ã¼ãé åããªãã¸ã§ã¯ãã§ãå復å¦çãã¨ã«é åããªãã¸ã§ã¯ããã³ãã¼ãã¦ããå ´åã誤ã£ã¦ã³ã¼ãã« 2 次çãªè¤éããå°å ¥ãã¦ãã¾ãã大ããªãã¼ã¿ã§ããã«ããã©ã¼ãã³ã¹ãä½ä¸ãã¦ãã¾ãå¯è½æ§ãããã¾ããããã¯å®éã®ã³ã¼ãã§ãç¾ãã¦ãã¾ããä¾ãã°ã Making Tanstack Table 1000x faster with a 1 line change ãåç §ãã¦ãã ããã
reduce() ã®åãå
¥ããããç¨éã®ããã¤ãã¯ä¸ã§æå®ããããã®ã§ãï¼ç¹ã«ãé
åã®åè¨ããããã¹ã®é åºä»ãã颿°ã®ãã¤ãå¦çï¼ãä»ã«ã reduce() ãããåªããä»£æ¿ææ®µãåå¨ããå ´åãããã¾ãã
-
é åã®å¹³å¦åã代ããã«
flat()ã使ç¨ãã¦ãã ãããjsconst flattened = array.reduce((acc, cur) => acc.concat(cur), []);jsconst flattened = array.flat(); -
ããããã£ã«ãããªãã¸ã§ã¯ãã®ã°ã«ã¼ãåã代ããã«
Object.groupBy()ã使ç¨ãã¦ãã ãããjsconst groups = array.reduce((acc, obj) => { const key = obj.name; const curGroup = acc[key] ?? []; return { ...acc, [key]: [...curGroup, obj] }; }, {});jsconst groups = Object.groupBy(array, (obj) => obj.name); -
ãªãã¸ã§ã¯ãã®é åã«æ ¼ç´ããã¦ããé åã®é£çµã代ããã«
flatMap()ã使ç¨ãã¦ãã ãããjsconst friends = [ { name: "Anna", books: ["Bible", "Harry Potter"] }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"] }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"] }, ]; const allBooks = friends.reduce((acc, cur) => [...acc, ...cur.books], []);jsconst allBooks = friends.flatMap((person) => person.books); -
é åå ã®éè¤é ç®ã®é¤å»ã代ããã«
Setã¨Array.from()ã使ç¨ãã¦ãã ãããjsconst uniqArray = array.reduce( (acc, cur) => (acc.includes(cur) ? acc : [...acc, cur]), [], );jsconst uniqArray = Array.from(new Set(array)); -
é åã®è¦ç´ ã®åé¤ã追å ã代ããã«
flatMap()ã使ç¨ãã¦ãã ãããjs// æ°å¤ã®é åãåãåããå®å ¨äºä¹ãå¹³æ¹æ ¹ã«åå²ãã¾ãã const roots = array.reduce((acc, cur) => { if (cur < 0) return acc; const root = Math.sqrt(cur); if (Number.isInteger(root)) return [...acc, root, root]; return [...acc, cur]; }, []);jsconst roots = array.flatMap((val) => { if (val < 0) return []; const root = Math.sqrt(val); if (Number.isInteger(root)) return [root, root]; return [val]; });é åããè¦ç´ ãåãé¤ãã ããªã
filter()ã使ç¨ã§ãã¾ãã -
è¦ç´ ã®æ¤ç´¢ãã¾ãã¯è¦ç´ ãæ¡ä»¶ãæºãããã©ããã®ãã¹ãã代ããã«
find()ã¨findIndex()ã¾ãã¯some()ã¨every()ã使ç¨ãã¦ãã ããããããã®ã¡ã½ããã«ã¯ãé åå ¨ä½ãå復å¦çãããã¨ãªããçµæã確å®ãããããã«è¿ãã¨ãã好ã¾ãããã¨ãããã¾ããjsconst allEven = array.reduce((acc, cur) => acc && cur % 2 === 0, true);jsconst allEven = array.every((val) => val % 2 === 0);
reduce() ãæè¯ã®é¸æã§ããå ´åã¯ãããã¥ã¡ã³ãåã¨å¤æ°åã®æå³ã¥ãããããã¨ã§ãå¯èªæ§ã®æ¬ ç¹ã軽æ¸ããæå©ãã«ãªãã¾ãã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.reduce> |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
Array.prototype.reduceã®ããªãã£ã« (core-js)- es-shims ã«ãã
Array.prototype.reduceã®ããªãã£ã« - ã¤ã³ããã¯ã¹ä»ãã³ã¬ã¯ã·ã§ã³ã®ã¬ã¤ã
ArrayArray.prototype.map()Array.prototype.flat()Array.prototype.flatMap()Array.prototype.reduceRight()TypedArray.prototype.reduce()Object.groupBy()Map.groupBy()