iT邦幫忙

1

js計算object平均 並轉換成 integer

https://codepen.io/yztracker/pen/abbqJRj?editors=1111
這是我找到的方法
他是能用的但套用到我自己的資料時就不行了
是因為它是object嗎
下面為我的資料

const data  =[{"post":{"point":[5]},"avg":5},{"post":{"point":[6,1,3]},"avg":3.33}]

2 個回答

2
dragonH
iT邦超人 6 級 ‧ 2019-11-04 20:29:21
最佳解答

不是阿

我上一篇已經回你了 /images/emoticon/emoticon04.gif

你的 object 沒有 found 這個 key

最後會算 0/0

也就會拿到 NaN

看更多先前的回應...收起先前的回應...

dragonH
你說key我就看懂了... 原來那個found 不是一個函式 一直誤會了

dragonH iT邦超人 6 級 ‧ 2019-11-04 20:46:34 檢舉

兩個方法給你參考

codepen

第二個方法要注意 Array.flat() 的支援度

/images/emoticon/emoticon82.gif

dragonH

      value=[{avg:2},{avg:3}]
      let popularitySum = 0;
      const len = value.length;
      let item = null;
      for (let i = 0; i < len; i++) {
          item = value[i];
          
              popularitySum = item.avg + popularitySum;
          
      }
      const averagePopularity = popularitySum /len ;
      avgN=averagePopularity.toFixed(1)
      console.log(avgN)

我剛剛發現後改的也可以 大大的方法我就先收下了
簡短好多感謝!!

dragonH iT邦超人 6 級 ‧ 2019-11-04 21:07:39 檢舉

/images/emoticon/emoticon12.gif

froce iT邦大師 2 級 ‧ 2019-11-04 21:53:07 檢舉

等一下,為啥是要除以筆數,不是除以point的總數?

dragonH iT邦超人 6 級 ‧ 2019-11-04 21:57:01 檢舉

froce

因為他上一篇說要算總平均XD

應該是除筆數我猜 /images/emoticon/emoticon07.gif

froce iT邦大師 2 級 ‧ 2019-11-04 21:59:26 檢舉

總平均應該是除以point的筆數吧。XD

dragonH iT邦超人 6 級 ‧ 2019-11-04 22:04:51 檢舉

好問題

我一開始是想到 posts(2筆) 的 平均 /images/emoticon/emoticon13.gif

2
froce
iT邦大師 2 級 ‧ 2019-11-04 21:35:09
const data  =[{"post":{"point":[5]},"avg":5},{"post":{"point":[6,1,3]},"avg":3.33}]

const result = data.map(item => item.post.point).flat()
const avg = result.reduce((cur, pre) => cur+pre, 0)/ result.length

是要這樣?

const result = data.map(item => item.post.point).reduce((cur,pre) => cur.concat(pre), [])
const avg = result.reduce((cur, pre) => cur+pre, 0)/ result.length

然後這樣應該支援度好一點。

我要發表回答

立即登入回答