如何使用 .some() 查找对象数组是否包含特定的 属性 值

How can I use .some() to find if an array of objects contains a specific property value

我有一个包含对象的数组,其中每个对象代表一个要去视频剧院的人。 这些对象包含姓名、年龄和爱好等属性。 如果(至少)有一个人未满 18 岁,则变量 censor 应设置为 true

尽管 Tim 未满 18 岁,但我下面的代码产生了 false 值。 无法以这种方式使用 .some() 还是我做错了什么?

var persons = [
    {Name: "Joel", Age:25, Hobby:"Fishing"},
    {Name: "Michael", Age:31, Hobby:"Astronomy"},
    {Name: "Tim", Age:12, Hobby:"Video Games"},
]

var censor = persons.some((person) => {person.Age < 18})
console.log(censor) --> false

var censor = persons.some((person) => person.Age < 18); // <-- no curly brackets for the predicate

而不是{person.Age < 18}

您需要删除括号。

var persons = [
    {Name: "Joel", Age:25, Hobby:"Fishing"},
    {Name: "Michael", Age:31, Hobby:"Astronomy"},
    {Name: "Tim", Age:12, Hobby:"Video Games"},
]

var censor = persons.some((person) => person.Age < 18)
console.log(censor)

如果你想继续使用括号,那么你需要在语句中添加return

var censor = persons.some((person) => {
  return person.Age < 18
})

您的回调中缺少 return,这就是为什么它总是 false

要么使用:

var censor = persons.some(person => person.Age < 18)

var censor = persons.some(person => {return person.Age < 18 })