前提・実現したいこと
forEachで取得した値を加算して合計を求めたいです。
発生している問題・エラーメッセージ
firestoreから抽出したデータは表示されます。(該当の日付にあるデータ) consoleで確認するとforEachで取得できたデータが順に表示されます。 色々ググって試しましたが、合計を出すことができませんでした。
該当のソースコード
for(var d = startDate; d <= endDate; d.setDate(d.getDate()+1)) { var formatedDate = d.getFullYear()+""+(d.getMonth()+1)+""+d.getDate(); dateList.push(formatedDate); } dateList.forEach(function(element){ db.collection("users").doc(userId).collection("time").doc(element).get().then((snapshot)=>{ if(snapshot.data() !== undefined){ scores = snapshot.data().toMinutes; //ここに式を入れればいいと思ったのですが… //以下は色々試したなかの一つです。 let result = [scores]; let total = result.reduce(function(sum, element){ return sum + element; }, 0); console.log(total) //ここまで }else{~~~
(追記:kis9aさんに教えて頂いたコード)
for (var d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
var formatedDate =
d.getFullYear() + "" + (d.getMonth() + 1) + "" + d.getDate();
dateList.push(formatedDate);
}
console.log(dateList); // month.html 78
const getTotalOfMonth = (dateList) => {
let totalOfMonth = 0
dateList.forEach((date) => {
db.collection("users").doc(userId).collection("time").doc(date).get().then((snapshot) => {
if (snapshot.data() !== undefined) { scores = snapshot.data().toMinutes; // ここに式を入れればいいと思ったのですが… // 以下は色々試したなかの一つです。 let result = [scores]; let totalOfDate = result.reduce(function (sum, element) { return sum + element; }, 0); totalOfMonth = totalOfMonth + totalOfDate;
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
//追加
let array1 = [];
array1.push(totalOfMonth)
console.log(array1)
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
} else {
}
});
});
return getTotalOfMonth
};
console.log(getTotalOfMonth(dateList))
補足情報(FW/ツールのバージョンなど)
初歩的な内容かもしれないのですが、私の検索能力では限界だったのでお助け頂けると助かります。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/15 02:34
2021/09/16 01:12