[AVASCRIPT]配列の繰り返し値のカウントを求めます–REDUCE()
6292 ワード
前の記事では、reduce()のデフォルト書き込みとアキュムレータをパラメータとして使用する特性を使用して、配列内の要素を加算しました.
今回は、アキュムレータ値とinitialValueを指定できる特性を利用して、配列にどれだけの重複値があるかを求めます! initialValueが{}と指定されているため、acu(積算値)の最初の値は{}となります.次に、受信配列の最初の値のcurrは「a」であり、空のオブジェクトで「a」を検索するaccu[curr]の値はundefinedである.現在は空のオブジェクトなので、「a」キー値の値はありません. 1号のオブジェクトには「a」の値がないため、0が割り当てられて+1、2番目のcurの値が「b」となる.今回は、オブジェクトにbというキー値が存在しないため、accurr値は定義されていません. 2号は0+1を「b」の値として割り当てているので、累積値は{a:1,b:1}である.その後、オブジェクトにキー値がある場合は1を、ない場合は0を、1を加えます. オブジェクトをInitialValueとして指定し、キー値があるかどうかを確認し、値ごとに1を足すように配列内の重複要素数を求める.👊🏻
今回は、アキュムレータ値とinitialValueを指定できる特性を利用して、配列にどれだけの重複値があるかを求めます!
const array = ['a', 'b', 'a', 'a', 'b'];
const result = array.reduce((accu, curr) => {
console.log('accu',accu, 'curr', curr, accu[curr])
accu[curr] = (accu[curr] || 0)+1; // 객체에서 curr key값을 찾아 value값이 있으면 그 value에서 1을 더하고, 없다면 0을 할당하고 거기에 1을 더해준다.
return accu;
}, {});
console.log('result',result); // 'result' { a: 3, b: 2 }
reduce()が配列を巡回する方法を中間で表示します.ロゴコンソールを撮ったロゴだけで外すとこうなりますconsole.log('accu',accu, 'curr', curr, accu[curr])
'accu' {} 'curr' 'a' undefined // 1번
'accu' { a: 1 } 'curr' 'b' undefined // 2번
'accu' { a: 1, b: 1 } 'curr' 'a' 1 // 3번
'accu' { a: 2, b: 1 } 'curr' 'a' 2
'accu' { a: 3, b: 1 } 'curr' 'b' 1
Reference
この問題について([AVASCRIPT]配列の繰り返し値のカウントを求めます–REDUCE()), 我々は、より多くの情報をここで見つけました https://velog.io/@dev_cecy/JAVASCRIPT-배열의-중복-값-개수-구하기-REDUCEテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol