家計簿アプリを作成中です。
連想配列incomesの、お金の部分(income.imとしています)を合計した値を出したいのですが、うまくいきません。
「vue 連想配列 合計」等で調べて、reduce関数を用いてcomputedに処理を書いたのですが、income.imがただ並べられて表示されてしまいます。
どこが間違っているのかいまいちわからない状態です。
ご教示のほど、よろしくお願い致します。
vue
1<template> 2 <div id="app"> 3 <header>ヘッダー</header> 4 <div class="container"> 5 <main> 6 <h2>収支</h2> 7 {{sum}} 8 <p>????年??月収支</p> 9 <hr /> 10 <p>収入 ????円</p> 11 <p>支出 ????円</p> 12 <h1>ここにグラフが入ります</h1> 13 </main> 14 <div class="column"> 15 <div class="right"> 16 <h2>収入</h2> 17 18 <p> 19 日付: 20 <input type="Date" v-model="incomeDate" /> 21 </p> 22 <p> 23 金額: 24 <input type="Number" v-model="incomeMoney" /> 25 </p> 26 <p> 27 名目: 28 <input type="text" v-model="incomeNominal" /> 29 </p> 30 <button @click="addIncome">登録</button> 31 <hr /> 32 <div v-for="income in incomes" :key="income.no"> 33 日付:{{income.id}} 金額:{{income.im}} 名目:{{income.in}} 34 <button 35 @click="deleteIncome(income)" 36 >削除</button> 37 </div> 38 </div> 39 </div> 40 </div> 41 </div> 42</template> 43 44<script> 45export default { 46 data() { 47 return { 48 incomes: [], 49 incomeDate: "", 50 incomeMoney: "", 51 incomeNominal: "", 52 aaa: 0 53 }; 54 }, 55 56 mounted() { 57 if (localStorage.getItem("incomes")) { 58 try { 59 this.incomes = JSON.parse(localStorage.getItem("incomes")); 60 } catch (e) { 61 localStorage.removeItem("incomes"); 62 } 63 } 64 }, 65 methods: { 66 addIncome() { 67 if (this.incomeMoney === "" && this.incomeDate === "") { 68 return; 69 } 70 this.incomes.push({ 71 id: this.incomeDate, 72 im: this.incomeMoney, 73 in: this.incomeNominal 74 }); 75 this.save(); 76 }, 77 deleteIncome(income) { 78 this.incomes.splice(this.incomes.indexOf(income), 1); 79 this.save(); 80 }, 81 82 save() { 83 const a = JSON.stringify(this.incomes); 84 localStorage.setItem("incomes", a); 85 } 86 }, 87 computed: { 88 sum() { 89 const total = this.incomes.reduce((sum, i) => sum + i.im, 0); 90 return total; 91 } 92 } 93}; 94</script> 95 96<style> 97#app { 98 width: 1000px; 99 margin: 0 auto; 100} 101.container { 102 display: flex; 103} 104.column { 105 flex-direction: column; 106} 107main { 108 flex: 1; 109 height: 1000px; 110} 111.right { 112 width: 450px; 113 height: 500px; 114} 115</style>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 14:49
2020/06/17 14:59
2020/06/18 02:17