这个有没有简单的写法?

最多只有一个current是1的数据 找出它的id 有没有简单的写法?

let arr = [
    {
        current:1,
        zoneId: 652274
    },
    {
        current:0,
        zoneId: 614420
    },
    {
        current:0,
        zoneId: 244584
    }
]
arr.map(res=>{
    if(res.current==1){
        console.log(res.zoneId)
    }
})
阅读 1.8k
3 个回答

arr.find(a=>a.current)

使用 Array.prototype.find() 可以按条件找到第一个符合要求的元素。

根据题意,“最多只有一个”,说明存在“没有”的情况,所以 find() 的结果有可能是 undefined

这么一来,找到对象,并取其 ID 的写法应该这样(使用可选链运算符兼容 undefined 结果):

const id = arr.find(({ current }) => current === 1)?.zoneId;    

PS,我不太赞同使用 a => a.current 来作为条件,它除了包含 current === 1 的情况,还包含很多其他情况,比如 -12 等……在没有限定出现的值只有 01 的情况下,不应该做只有这两个可能值的假设。

@七笑 的答案如果写成箭头函数会更简单一些。

@NickWang 的答案相对更准确。

新手上路,请多包涵
var obj = arr.find(function(obj)){
      return obj.current === 1
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题