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

JavaScript判断数组对象中所有影片是否均获奥斯卡的函数实现求助

问题解答:实现Winners函数判断影片是否全部获奥斯卡奖

需求说明

实现名为Winners的函数,接收影片数组作为参数:

  • 数组中存在至少一部wonOscar属性为false的影片 → 返回false
  • 所有影片的wonOscar属性均为true → 返回true

原代码问题分析

你当前的代码存在逻辑错误:

function Winners(films) {
    return films.every(element => element === false);
}

这里的element是数组中的影片对象,不是布尔值,直接和false比较永远返回false,导致函数无论输入什么都会返回false,完全不符合需求。

可正常运行的代码示例

写法一:使用every方法直接验证全部符合条件

function Winners(films) {
  return films.every(film => film.wonOscar === true);
}

写法二:使用some方法反向验证(性能更优)

function Winners(films) {
  return !films.some(film => film.wonOscar === false);
}

工作原理详解

写法一(every方法)

  • 数组的every()方法会遍历数组元素,只有当所有元素都满足回调条件时返回true
  • 回调函数film => film.wonOscar === true检查每个影片对象的wonOscar属性是否为true
  • 一旦遇到任意一个wonOscar为false的影片,every()会立即停止遍历并返回false,最终函数返回false;若全部符合则返回true

写法二(some方法取反)

  • 数组的some()方法会遍历数组元素,只要找到一个满足条件的元素就返回true
  • 回调函数film => film.wonOscar === false检查是否存在未获奥斯卡的影片
  • 如果存在这样的影片,some()返回true,取反后函数返回false;如果不存在,some()返回false,取反后函数返回true
  • 这种写法的优势是:找到第一个不符合条件的元素就会停止遍历,无需遍历整个数组,性能更高效

示例验证

代入你提供的测试数组:

Winners([
    { title: "Fake Movie1", wonOscar: true },
    { title: "Fake Movie2", wonOscar: true },
    { title: "Fake Movie3", wonOscar: false },
    { title: "Fake Movie4", wonOscar: true }
]);

两种写法都会返回false,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:10:34