Javascript对象数组帮助

时间:2020-08-29 16:10:48

标签: javascript arrays object

我正在尝试进行评分算法。最初的值都是这样的:

[
  { rating: 1, amount: 252 },
  { rating: 2, amount: 124 },
  { rating: 3, amount: 40 },
  { rating: 4, amount: 29 },
  { rating: 5, amount: 30 },
];

例如,rating是值,amount是留下4星级评价的人数

我想做的就是获取这些值并计算以下内容以获得评分

(5*252 + 4*124 + 3*40 + 2*29 + 1*33) / (252+124+40+29+33) = 4.11

所以我的问题是,像我上面用基本数学所做的那样,采用initialized对象数组并计算等级的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

您可以迭代数组并收集乘积和数量以获取平均值。

const 
    data = [{ rating: 1, amount: 252 }, { rating: 2, amount: 124 }, { rating: 3, amount: 40 }, { rating: 4, amount: 29 }, { rating: 5, amount: 30 }],
    { sum, count } = data.reduce((r, { rating, amount }) => {
        r.sum += rating * amount;
        r.count += amount;
        return r;
    }, { sum: 0, count: 0 }),
    average = sum /count;

console.log(average);

答案 1 :(得分:-1)

首先,您的上述计算值似乎应该有问题

emailCode

根据您提供的数组。

(5*252 + 4*124 + 3*40 + 2*29 + 1*30) / (252+124+40+29+30) = 4.13

相关问题