问:
现在有一个数组:let arr = ['xxx@mail.com','xxx@mail.com','xxx@mail.com','xxx@mail.com','xxx@mail.com'],我现在可以获取到当前用户的email,我需要将当前用户的email对照arr中,是否有这个email,有的话点击按钮可以跳转,当前用户email不存在arr就不可以跳转.
回答:
可以使用includes方法,返回的true或者false:
创造一个canNavigate字段,
canNavigate.value = arr.includes(currentUserEmail.value);
用canNavigate字段控制点击按钮是否跳转。
问:
能否使用indexOf?
回答:
可以,返回值同样是true或者false,
canNavigate.value = arr.indexOf(currentUserEmail.value) > -1;
问:
为什么我们使用indexOf一定要让他大于-1,才能起到判断的作用?
回答:
indexOf方法最终有,就会返回找到的元素的下标,最终找不到就会返回-1,不会返回布尔值。
所以,
在 JavaScript 中,indexOf
方法返回数组中指定元素的第一个索引,如果元素不存在,则返回 -1
。因此,检查一个元素是否存在于数组中的常见方法是比较 indexOf
的返回值是否大于 -1
。
以下是详细解释:
-
indexOf
方法的返回值:- 如果数组中包含指定的元素,
indexOf
返回该元素的第一个索引,索引从0
开始。 - 如果数组中不包含指定的元素,
indexOf
返回-1
。
- 如果数组中包含指定的元素,
-
为什么使用
> -1
:- 由于
indexOf
返回的索引是从0
开始的,任何存在于数组中的元素的索引都会是非负数(即0
或正数)。 - 因此,检查一个元素是否存在于数组中的标准方法是比较
indexOf
的返回值是否大于-1
。
- 由于