Javascript 为什么此代码没有';t返回正确的结果(8.675)

Javascript 为什么此代码没有';t返回正确的结果(8.675),javascript,arrays,dictionary,Javascript,Arrays,Dictionary,所以我通过了这个挑战 我写了代码,它工作了,但是浏览器在某个时刻没有响应,所以我不得不关闭它,关闭它导致代码消失,我不得不写另一个,问题是当我写新代码时,它没有返回正确的答案(返回2) 你能解释一下为什么会这样吗?请不要给我直接的答案,告诉我为什么会发生这种情况,以及我是如何解决的,仅此而已 这是我的代码: //全局变量 var监视列表=[{ “标题”:“盗梦空间”, “年份”:“2010年”, “额定”:“PG-13”, “发布”:“2010年7月16日”, “运行时间”:“148分钟”,

所以我通过了这个挑战

我写了代码,它工作了,但是浏览器在某个时刻没有响应,所以我不得不关闭它,关闭它导致代码消失,我不得不写另一个,问题是当我写新代码时,它没有返回正确的答案(返回2)

你能解释一下为什么会这样吗?请不要给我直接的答案,告诉我为什么会发生这种情况,以及我是如何解决的,仅此而已

这是我的代码:

//全局变量
var监视列表=[{
“标题”:“盗梦空间”,
“年份”:“2010年”,
“额定”:“PG-13”,
“发布”:“2010年7月16日”,
“运行时间”:“148分钟”,
“类型”:“动作、冒险、犯罪”,
“导演”:“克里斯托弗·诺兰”,
“作家”:“克里斯托弗·诺兰”,
“演员”:“莱昂纳多·迪卡普里奥、约瑟夫·戈登·莱维特、艾伦·佩奇、汤姆·哈代”,
“阴谋”:“通过分享梦想技术窃取公司秘密的窃贼,被赋予相反的任务,将想法植入CEO的头脑。”,
“语言”:“英语、日语、法语”,
“国家”:“美国、英国”,
“奖项”:“获得4项奥斯卡奖,另外143项获奖,198项提名。”,
“海报”:http://ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg“,
“元分数”:“74”,
“imdbRating”:“8.8”,
“IMDBVOUTES”:“1446708”,
“imdbID”:“tt1375666”,
“类型”:“电影”,
“响应”:“正确”
},
{
“标题”:“星际”,
“年份”:“2014年”,
“额定”:“PG-13”,
“发布”:“2014年11月7日”,
“运行时间”:“169分钟”,
“类型”:“冒险、戏剧、科幻”,
“导演”:“克里斯托弗·诺兰”,
“作家”:“乔纳森·诺兰,克里斯托弗·诺兰”,
“演员”:“艾伦·伯斯廷、马修·麦康纳、麦肯齐·福伊、约翰·利思高”,
“情节”:“一队探险家穿越太空虫洞,试图确保人类的生存。”,
“语言”:“英语”,
“国家”:“美国、英国”,
“奖项”:“获得1项奥斯卡奖。另外39项获奖和132项提名。”,
“海报”:http://ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg“,
“元分数”:“74”,
“imdbRating”:“8.6”,
“IMDBVOUTES”:“910366”,
“imdbID”:“tt0816692”,
“类型”:“电影”,
“响应”:“正确”
},
{
“头衔”:“黑暗骑士”,
“年”:“2008年”,
“额定”:“PG-13”,
“发布”:“2008年7月18日”,
“运行时间”:“152分钟”,
“类型”:“动作、冒险、犯罪”,
“导演”:“克里斯托弗·诺兰”,
“编剧”:“乔纳森·诺兰(剧本)、克里斯托弗·诺兰(剧本)、克里斯托弗·诺兰(故事)、大卫·S·戈耶(故事)、鲍勃·凯恩(角色)”,
“演员”:“克里斯蒂安·贝尔、希思·莱杰、亚伦·埃克哈特、迈克尔·凯恩”,
“阴谋”:“当被称为小丑的威胁对高谭人民造成浩劫和混乱时,披着斗篷的十字军战士必须接受对其与不公正作斗争能力的最大心理测试之一。”,
“语言”:“英语、普通话”,
“国家”:“美国、英国”,
“奖项”:“获得2项奥斯卡奖,另外146项和142项提名。”,
“海报”:http://ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg“,
“元分数”:“82”,
“imdbRating”:“9.0”,
“imdbvoces”:“1652832”,
“imdbID”:“tt0468569”,
“类型”:“电影”,
“响应”:“正确”
},
{
“标题”:“蝙蝠侠开始”,
“年份”:“2005年”,
“额定”:“PG-13”,
“发布”:“2005年6月15日”,
“运行时间”:“140分钟”,
“类型”:“动作、冒险”,
“导演”:“克里斯托弗·诺兰”,
“作家”:“鲍勃·凯恩(角色)、大卫·S·高耶(故事)、克里斯托弗·诺兰(剧本)、大卫·S·高耶(剧本)”,
“演员”:“克里斯蒂安·贝尔、迈克尔·凯恩、利亚姆·尼森、凯蒂·赫尔姆斯”,
“阴谋”:“在与导师一起训练后,蝙蝠侠开始了他的战斗,以使犯罪猖獗的高谭市摆脱稻草人和阴影联盟对其造成的腐败。”,
“语言”:“英语、乌尔都语、普通话”,
“国家”:“美国、英国”,
“奖项”:“获得1项奥斯卡提名,另外15项获奖,66项提名。”,
“海报”:http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg",
“元分数”:“70”,
“imdbRating”:“8.3”,
“IMDBVOUTES”:“972584”,
“imdbID”:“tt0372784”,
“类型”:“电影”,
“响应”:“正确”
},
{
“标题”:“阿凡达”,
“年份”:“2009年”,
“额定”:“PG-13”,
“发布”:“2009年12月18日”,
“运行时间”:“162分钟”,
“类型”:“动作、冒险、幻想”,
“导演”:“詹姆斯·卡梅隆”,
“作家”:“詹姆斯·卡梅隆”,
“演员”:“萨姆·沃辛顿、佐伊·萨尔达纳、西格尼·韦弗、斯蒂芬·朗”,
“阴谋”:“一名瘫痪的海军陆战队员被派往潘多拉月球执行一项独特的任务,他在服从命令和保护他认为是自己家的世界之间左右为难。”,
“语言”:“英语、西班牙语”,
“国家”:“美国、英国”,
“奖项”:“获得3项奥斯卡奖,另外80项和121项提名。”,
“海报”:http://ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg“,
“元分数”:“83”,
“imdbRating”:“7.9”,
“IMDBVOUTES”:“876575”,
“imdbID”:“tt0499549”,
“类型”:“电影”,
“响应”:“正确”
}
];
//将代码添加到此行下方
var-arr=[];
watchList.map(项=>{
如果(item.Director==“Christopher Nolan”){
arr.push(编号(项目imdbRating));
}
});
var averageRating=arr.reduce((之前、之后)=>{
返回(前+后)/到达长度;
});
//将代码添加到此行上方

console.log(平均值)代码中存在逻辑错误,返回的值错误。 问题是,每次使用reduce对数组进行迭代时,都要将平均评级除以数组长度

return (before + after) / arr.length;
应该是

return (before + after);
在最后一步中,您应该按数组长度进行分隔,如-

averageRating  = averageRating/arr.length;

.map
.reduce
实现肯定是错误的,但您的代码没有任何实际错误