首页 > 解决方案 > 不能将 .some() 与对象数组一起使用

问题描述

我正在尝试检查我的对象数组是否包含具有指定值的属性。为此,我想到了使用array.some(), 而不是 foreach 循环。但是我不断收到错误消息:

错误 TS2345:“(元素:ListaDetalhePendenciaAprovacao)=> void”类型的参数不可分配给“(值:ListaDetalhePendenciaAprovacao,索引:数字,数组:ListaDetalhePendenciaAprovacao[])=> 布尔”类型的参数。类型 'void' 不能分配给类型 'boolean'。

代码如下:

   let existeApr = this.pendenciasList.some(element =>{
      !isUndefined(element.isSelected) && element.isSelected
    })

   let existeRej = this.pendenciasList.some(element =>{
      !isUndefined(element.isSelected) && element.isSelected
    })

我也遇到了与array.findIndex() 相同的问题。我为我的母语中的属性道歉,我认为这不应该是一个问题。

提前致谢!

标签: angulartypescript

解决方案


这是因为您传递给的回调中的花括号some。如果打开花括号,则需要从中返回一个布尔值:

let existeApr = this.pendenciasList.some(element =>{
  return !isUndefined(element.isSelected) && element.isSelected
})

但是对于像你这样的单行,你应该完全放弃花括号并使用这样的东西:

let existeApr = this.pendenciasList.some(element =>
  !isUndefined(element.isSelected) && element.isSelected)

推荐阅读