You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对存储剧集信息的二维数组按剧集名称分组并计算平均评分

如何对存储剧集信息的二维数组按剧集名称分组并计算平均评分

我完全懂你的需求!你已经用reduce完成了评分累加的第一步,但确实漏掉了统计每个剧集出现次数的环节,所以没法算出平均分。我来帮你调整代码,完美解决这个问题~

问题分析

你当前的代码直接把同剧集的评分累加后覆盖了原条目,但没有记录评分的次数,自然没法计算平均值。而且现在的代码还保留了第一次出现的观看时长,从你的预期结果来看,这个逻辑是对的,我们可以继续沿用。

修改后的解决方案

我们需要在reduce的累加器里临时存储每个剧集的总评分、评分次数和观看时长,最后再把这些临时数据转换成你需要的二维数组格式:

let seriesList = [["Squid Game", 3.5, "4 days"], ["Squid Game", 2.5, "3 days"], ["Buffy the Vampire Slayer", 5, "32 days"], ["The Fosters", 3, "5 days"]];

let seriesListAverage = Object.values(
    seriesList.reduce((accumulator, currentValue) => {
        // 解构当前条目的数据,让代码更清晰
        const [title, rating, time] = currentValue;

        if (accumulator[title]) {
            // 如果该剧集已经在累加器中,更新总评分和次数
            accumulator[title].totalRating += rating;
            accumulator[title].count += 1;
        } else {
            // 如果是第一次遇到该剧集,初始化临时存储的对象
            accumulator[title] = {
                title: title,
                totalRating: rating,
                count: 1,
                time: time
            };
        }
        return accumulator;
    }, {})
).map(tempItem => {
    // 计算平均分,转换成目标二维数组格式
    const averageRating = tempItem.totalRating / tempItem.count;
    // 可选:如果需要固定小数位数,比如保留1位,可以用下面的写法
    // const averageRating = Number((tempItem.totalRating / tempItem.count).toFixed(1));
    return [tempItem.title, averageRating, tempItem.time];
});

console.log(seriesListAverage);
// 输出结果:[["Squid Game", 3, "4 days"], ["Buffy the Vampire Slayer", 5, "32 days"], ["The Fosters", 3, "5 days"]]

额外说明

  1. 小数位数处理:如果需要对平均分做格式化(比如保留1位小数),可以用toFixed(1),但注意它会返回字符串,需要用Number()转成数字类型。
  2. 观看时长的选择:当前代码保留的是剧集第一次出现的时长,如果需要保留最后一次的,只需要把else分支里的time: time去掉,改成每次遍历都执行accumulator[title].time = time即可。
  3. Apps Script兼容性:这段代码完全适配Google Apps Script的环境,生成的二维数组可以直接写入到你的工作表中,和你原来的写入逻辑无缝衔接。

备注:内容来源于stack exchange,提问作者amy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:58:01