TIL 5|配列メソッドフィルタ、map、reduce、forEach
15971 ワード
配列内のすべての要素を遍歴しながらコールバック関数を繰り返す4つの配列法をまとめた.必要なときはその方法で思い出せばいいのに思い出せない
この機会に整理して、どんな場合に特定の方法を使ったほうがいいか見てみましょう.
filter()
自体の配列のすべての要素をループ呼び出し、コールバック関数を繰り返し呼び出し、戻り値 元の配列は変更されません. フィルタリング方法を使用して一部の要素を削除すると、一部の要素が重複している場合、重複しているすべての要素が削除されます. map()
自体の配列内のすべての要素をループ呼び出し、コールバック関数を繰り返し呼び出し、戻り値からなる要素が 元の配列は変更されません. mapメソッドを呼び出す配列とmapメソッドによって生成される配列は 独自の配列のすべての要素が呼び出されると、コールバック関数が繰り返し呼び出され、最終的に結果値が生成され、返されます. 元の配列は変更されません. 1回目の買収は、 初期値は、数値から配列までの様々な値を入力することができる. 最初の買収は、以前に呼び出された は初期値と配列の最初の要素値をパラメータとしてコールバック関数に渡し、次のループはコールバック関数の戻り値(acc)と2番目の要素値(cur)をパラメータとして呼び出し、これらのプロセスを繰り返して結果値を返す. forEach()
自身の配列では、コールバック関数を渡すことによって繰り返し呼び出される. 複文の高次関数に代わることができます. 反復文との違いは、break、continue文を使用できないことです.配列された各要素は漏れなく巡回し,中間は中断できない. の戻り値は、常に
この機会に整理して、どんな場合に特定の方法を使ったほうがいいか見てみましょう.
filter()
呼び出し
true
の要素のみからなる新しい配列を返します.const numbers = [1, 2, 3, 4, 5];
const odds = numbers.filter(item => item % 2);
console.log(odds); // [1, 3, 5]
アレイから特定の要素を削除(重複要素)
const number = [1, 1, 2, 2, 3, 4, 5];
let arr = number.filter((item, index) =>
number.indexOf(item) === index
);
console.log(arr); // [ 1, 2, 3, 4, 5 ]
AとBの交わり
let arr1 = [1, 2, 3, 4];
let arr2 = [1, 2, 5, 6, 7];
let arr3 = arr1.filter(item => arr2.includes(item));
console.log(arr3); // [1, 2]
map()
呼び出し
새로운 배열
を返す.const numbers = [1, 4, 9];
const roots = numbers.map(item => Math.sqrt(item));
console.log(roots); // [1, 2, 3]
1:1 매핑
であり、同じ長さ値を有する.reduce()
콜백함수
、2回目の買収は초기값
を受け取った.함수들의 결과가 누적되어 저장
の「アキュムレータ」とみなすことができる.最後の関数を呼び出すと、その値はreduceの戻り値になります.アレイ内のすべての要素の累積結果を取得
const arr = [1,2,3,4]
let sum = arr.reduce((acc, cur) => acc + cur, 0)
console.log(sum); //
平均値を求める
const arr = [1, 2, 3, 4, 5];
const average = arr.reduce((acc, cur, index) => {
return index === arr.length - 1 ? (acc + cur) / arr.length : acc + cur
}, 0);
console.log(average); // 3
繰り返しを求める
const alphabet = ['a', 'b', 'c', 'b', 'd'];
const count = alphabet.reduce((acc, cur) => {
acc[cur] = (acc[cur] || 0) + 1;
return acc;
}, {});
// 초기값인 빈 객체에 요소값인 cur을 property key로, 요소의 개수를 value로 할당한다.
console.log(count); // { a: 1, b: 2, c: 1, d: 1 }
forEach()
呼び出し
const arr = [1, 2, 3];
const newArr = arr.forEach(item => item ** 2);
console.log(newArr); // undefined
// forEach 메소드의 반환값은 언제나 undefined다.
undefined
です.配列内の要素は、指定された関数のみで呼び出されます.const arr = [1, 2, 3];
const newArr = [];
const arr2 = arr.forEach(item => newArr.push(item ** 2));
console.log(newArr); // [1, 4, 9]
Reference
この問題について(TIL 5|配列メソッドフィルタ、map、reduce、forEach), 我々は、より多くの情報をここで見つけました https://velog.io/@20o21/TIL-5-ArrayMethodテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol