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

JS入门者求助:如何用map和reduce获取数组中最长的电影标题?

获取数组中最长电影标题的错误修复与优化

错误原因

你代码里的核心问题是字符串的length是属性而非方法,你写成了name1.length()和name2.length(),加括号会把它当作函数调用,直接导致运行报错。把括号去掉,写成name1.length和name2.length就能解决这个问题。

修正后的代码

const movieReviews = [
    {
       title : "Black Adam",
        score : 68,
        year : 2022
    },
    {
       title : "Black Panther",
       score : 99,
       year : 2018
    },
    {
       title : "SpiderMan FFH",
       score : 90,
       year : 2020
    },
    {
       title : "Avatar",
       score : 100,
       year : 2009
    },
    {
        title : "WonderWoman",
        score : 75,
        year : 2019
    },
]

const longestName = movieReviews.map(m => m.title)
.reduce((name1, name2) => {
    if(name1.length > name2.length){
        return name1;
    }
    return name2;
})

console.log(longestName); // 输出:Black Panther

优化方案

其实没必要先用map生成单独的标题数组,直接在reduce里处理原数组的对象,减少一次数组遍历,效率更高:

const longestName = movieReviews.reduce((longestTitle, currentMovie) => {
    return currentMovie.title.length > longestTitle.length 
        ? currentMovie.title 
        : longestTitle;
}, movieReviews[0].title) // 初始值设为第一个电影的标题

console.log(longestName); // 输出:Black Panther

如果担心数组为空的情况,可以加个判断:

const longestName = movieReviews.length === 0 
    ? "" 
    : movieReviews.reduce((longestTitle, currentMovie) => {
        return currentMovie.title.length > longestTitle.length 
            ? currentMovie.title 
            : longestTitle;
    }, movieReviews[0].title)

内容的提问来源于stack exchange,提问作者MonkeyDZoro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:26