检查阵列存在和状况的最快/最短方法

时间:2019-02-18 17:30:44

标签: javascript arrays angular

我觉得这是一个非常简单的问题,但是作为初学者,我找不到答案。

最终,我想检查数组中是否存在元素(例如 userProfile.friendRequests)。

我最终使用includes作为简单的支票

checkRequest(friendReqUid) {
  return userProfile.friendRequests.includes(friendReqUid)
}

但是有时该数组甚至可能不存在,并且我看到的检查条件的唯一方法是预先为整个数组添加一个检查。

 checkRequest(friendReq) {
   return userProfile.friendRequest && userProfile.friendRequest.includes(friendReq)
 }

如果我是在模板中执行此操作(以显示按钮等),则最终将是一个漫长的尝试。

是否有更快的功能/方式来检查数组是否存在以及是否存在元素,而不是添加另一个检查实际数组是否存在的方法?

谢谢

1 个答案:

答案 0 :(得分:0)

我知道,最简单的方法是如果属性为falsy,则默认为空数组:

(userProfile.friendRequests || []).includes(friendReqUid)

但是我通常在访问数组之前检查对象是否存在,因此它更健壮:

(userProfile && userProfile.friendRequests || []).includes(friendReqUid)

编辑:如果您想对push()做同样的事情,则可以这样做:

userProfile && (userProfile.friendRequests = userProfile.friendRequests || []).push(friendReqUid)

如果伪造,这会将数组初始化为[]

但是,您可以考虑将其分成几行,以便于阅读。