js 怎样用includes判断数组是否包含某元素

说实话,当我第一次使用 include() 时,我感到非常惊讶。
以前我们总是使用indexOf(),但是我们必须判断返回值是否为-1 有时很容易错过 NaN 的特殊情况。
我记得有一次,在做一个项目时,我想检查用户上传的文件类型。
结果我没有考虑到文件名是字符串,类型是Blob对象。
直接 === 比较是错误的,我改成 include() 就正确了。

includes() 的伟大之处在于它直接编写 === 比较,省去了到处写 == 的麻烦。
但也有陷阱。
这意味着类型必须严格匹配。
例如,如果数组中有“3 ”,则使用 include(3 ) 肯定会返回 false。
这确实很难调整。
我就因为这个被困了很久。
后来我发现使用 JSON.stringify() 转换数组然后比较它们速度较慢但绝对可靠。

NaN 其实很有趣。
include() 可以识别这一点,但 indexOf() 感到困惑。
为了处理这种情况,我的同事编写了一个函数,将 NaN 替换为字符串“NaN”,然后进行比较。
虽然看起来有点难看,但它解决了问题。

我通常不怎么使用 fromIndex 参数,但它确实很有用。
有一次,在处理一个从后往前的搜索场景时,我使用了 fromIndex=-2 来保存循环,代码也很简洁。
但请注意,如果 fromIndex 大于数组长度或者为负数且绝对值大于数组长度,则立即返回 false 并停止搜索。
你必须记住这一点。

稀疏数组真的很奇怪。
我正在维护我的旧代码,发现我有像 [1 , ,3 ] 这样的数组,中间有空格。
使用 contains(undefined) 实际上返回 true,这在当时是令人困惑的。
检查文档后,我发现 JavaScript 将空数组槽视为未定义,因此 include() 默认识别它们。
解决办法是手动填写未定义的条目或者干脆使用new Set()去掉重复的条目,然后根据需要进行判断。

我们在兼容性方面也面临着陷阱。
我接手了一个IE1 1 项目,直接使用include(),得到了未定义的提示。
当时我真想打他。
后来我改用 indexOf() 或使用 Babel 进行翻译,效果很好。
因此,在使用新功能之前,您应该检查您的目标浏览器是否支持该功能。

总的来说,使用include()方法确实很方便,但是有很多细节,一不小心就会出现问题。
关键是理解比较机制、参数行为和特殊情况。
正如我的同事所说,对于简单的函数使用 include() ,对于复杂的逻辑使用 indexOf() 或 find() 。

js如何判断数组是否包含某元素

上周,朋友在做前端项目,遇到了一个判断数组是否包含某个元素的问题。
他说他尝试了几种方法,最后选择了includes()。

他说之前用过indexOf(),但是发现它不能处理NaN,这是处理数组时的问题。
于是他改用includes(),发现这个方法语义清晰,可以直接返回布尔值,非常适合他的需求。

2 02 3 年,我帮助一个客户优化一个旧项目,发现他们还在使用ES5 ,所以我推荐他们使用indexOf()。
但他也提醒我,如果项目中有NaN,indexOf()并不是最好的选择。

我的朋友说,如果他需要匹配复杂的对象或者自定义条件,他会选择find()、findIndex()或者some()。
他说,方法灵活,可以应对各种复杂情况。

还有一次,我需要精确控制遍历过程,所以我使用了传统的循环。
不过,他表示这种方法比较冗长,不推荐。

一般来说,选择哪种方法取决于具体的需求。
使用includes()来获取简单值,使用indexOf()来兼容旧环境,使用find()、findIndex()或some()来获取复杂的对象或条件,使用传统循环来精确控制遍历。
由你决定。

excel数组判断值包含

上周 你说的情况挺复杂的。

包括 2 、3 、4 、1 1 1 ? 这不算数。

你的公式太长了。
我不记得
的定义包括什么? 直接找就可以了。

您的 FIND 函数是正确的。
查找 A2 中的 1 作为 A1 中的第 7 个字符
但是如果用逗号分隔它们, 这不算
数组公式... 我做不到
算了 由你决定