配列のreduce方法
2577 ワード
この文章は配列reduceの使い方、三つのよくある使用と自分で実現するreduce紹介を紹介します.
1.reduceの使い方
菜鳥教程:
reduce()メソッドは、アキュムレータとして関数を受信し、配列内の各値(左から右へ)は縮小され、最終的には1つの値として計算される.
reduce()は関数のcomposeとして高次関数として利用できる.
注意:reduce()は、空の配列に対しては、コールバック関数を実行しません.
構文:
array.reduce(function(total,current Value,current Index,arr),initial Value)
2.reduceの使用例
文字だけではわかりにくいかもしれませんが、いくつかの場面を紹介します.
①配列の和
3.レデュースの実現
何かお役に立てることがあれば、何かいいものを注文してください.
1.reduceの使い方
菜鳥教程:
reduce()メソッドは、アキュムレータとして関数を受信し、配列内の各値(左から右へ)は縮小され、最終的には1つの値として計算される.
reduce()は関数のcomposeとして高次関数として利用できる.
注意:reduce()は、空の配列に対しては、コールバック関数を実行しません.
構文:
array.reduce(function(total,current Value,current Index,arr),initial Value)
2.reduceの使用例
文字だけではわかりにくいかもしれませんが、いくつかの場面を紹介します.
①配列の和
const arr=[1,2,3,4,5,6]
const sum=arr.reduce(
(prev,item)=>prev+item,// ,
0// prev
)
上記のコードでは、item
はそれぞれ
配列要素であり、第1の実行時にはprev=0
;第二の実行時、prev
の値は前回実行した戻り値で、prev+item
が終了するまで
、最終結果を返します.0+arr[1]+arr[2]...
が計算したコールバック関数に相当します.行列の中で4より大きい要素の和を求めるなど、必要な論理判断を書き込みます.判断文を加えるだけでいいです.const sum=arr.reduce(
(prev,item)=>item>4?prev+item:prev,
0
)
②配列デレーティングは、配列デレーティングに使用できます. const arr = [1, 2, 3, 4, 5, 1, 1, 5, {}, {}, null, null, NaN, NaN]
const arr2 = arr.reduce((init, item) => {
init.includes(item) ? null : init.push(item)
return init;
}, [])
console.log(arr, arr2);
1つの空配列initを初期値として、空配列initが巡回中の要素を含むかどうかを判定し、存在する場合は操作を行わず、存在しない場合はinit配列に要素を挿入し、最後にinit配列に戻る.includesの方式では空のオブジェクトは重くなりません.③フレームにvueで解析したいページの中の{person.friend.name}を使用します.// data
const data = {
person: {
friend: {
name: 'forceddd'
}
}
}
//
const str = 'person.friend.name'
const res = str.split('.').reduce(
(data, key) => data[key],
data
)
console.log(res);//'forceddd'
vueはまず文字列person.friend.name
を取得して、splitを通じて配列に変換して、reduce方法を利用してdataの中の値を取りやすくなりました.data[person][friend][name]
に相当します.3.レデュースの実現
Array.prototype.myReduce = function (cb, init = 0) {
if (typeof cb !== 'function') {
throw new Error(' ')
}
if (!this.length) {
throw new Error(' ')
}
for (let i = 0; i < this.length; i++) {
// , init
init = cb(init, this[i], i, this);
}
// init
return init;
}
以上は個人のためだけに理解して、もし間違いがあれば、ご指摘を歓迎します.何かお役に立てることがあれば、何かいいものを注文してください.