【问题标题】:How can I use .some() to find if an array of objects contains a specific property value如何使用 .some() 查找对象数组是否包含特定属性值
【发布时间】:2021-11-16 20:32:45
【问题描述】:

我有一个包含对象的数组,其中每个对象都代表一个要去影剧院的人。 这些对象包含名称、年龄和爱好等属性。 如果有(至少)一个人小于 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

【问题讨论】:

    标签: javascript arrays object exists any


    【解决方案1】:

    这是

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

    而不是{person.Age &lt; 18}

    【讨论】:

      【解决方案2】:

      您需要删除括号。

      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
      })
      

      【讨论】:

        【解决方案3】:

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

        任意使用:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-13
          • 2017-02-08
          • 1970-01-01
          • 2016-08-01
          • 1970-01-01
          相关资源
          最近更新 更多