JS配列オブジェクトはどうやってAray.reduceを使いますか?
4013 ワード
配列オブジェクトはどのようにreduceを使ってオブジェクトごとの属性を加算しますか?
需要:既存の配列オブジェクト、{dete:''2020-03-29 12:12'、count:12'、{date:''2020-03-28 13:12'、count:23}、すべての日数を求めるsum(count)使用技術:Aray.reduce()
需要:既存の配列オブジェクト、{dete:''2020-03-29 12:12'、count:12'、{date:''2020-03-28 13:12'、count:23}、すべての日数を求めるsum(count)使用技術:Aray.reduce()
/*
** reduce , total,currentValue, index,arr
** total 。 , 。
** currentValue 。
** currentIndex 。
** arr 。 。
*/
const dateArray = [
{date:'2020-03-29 12:12', count: 12},
{date: '2020-03-28 13:12', count: 23}
];
const numberPattern = /^[+-]?\d+(\.\d+)?$/;
const totalCount = dateArray .reduce((total, currentValue, currentIndex, arr) => {
const countMatched = numberPattern.exec(currentValue.count); // , ,
let count = 0; // count Number, 0
if (countMatched) {
count = parseFloat(countMatched[0]); // match ( ) Number
}
return total + count;
}, 0);
【後続】ここで注意したいのはパーrseFloatの使い方です.そのパラメータは数字で始まる文字列(もちろんNumberのタイプがいいです.)でなければパーサーフロトの結果はNaNです.たとえば、パーサーフロアー(''1233')やパースFloat('u 11')ではだめです.*これはいいです.0.11に戻ります.これもデータを処理する時に踏んだ穴に出会いました.皆さんに会わないでください.