检查 JS 数组是否包含特定值

发布于 2022-08-10 12:35:08 字数 3621 浏览 123 评论 0

给定一个 JavaScript 数组 ,您可以使用两种内置数组方法来确定数组是否包含给定元素。 假设您有一个包含 3 个元素的简单数组:

const arr = ['A', 'B', 'C'];

确定是否 arr 包含字符串 'B', 您可以使用 Array#includes() 或者 Array#indexOf().

includes()

Array#includes() 函数是 在 ECMAScript 2016 中引入的 。 它需要一个参数 valueToFind,并返回 true 如果数组中的某个元素等于 valueToFind

const arr = ['A', 'B', 'C'];

arr.includes('B'); // true
arr.includes('D'); // false

Array#includes() 函数使用与 === 运算符(无类型强制),除了 NaNArray#includes() 函数会发现 NaN 在一个数组中。 这种相等检查的技术术语是 sameValueZero

// Array contains 1 element, 'NaN'
const arr = [parseInt('foo')];

arr.includes(parseInt('foo')); // true
arr.includes(NaN); // true
arr.includes(Number.NaN); // true

// The `===` operator has some quirks with NaN. `Array#includes()`
// smooths out those rough edges.
arr[0] === NaN; // false
arr[0] === Number.NaN; // false

indexOf()

Array#indexOf() 函数 是一种常见的替代方法 includes(), 这 indexOf() 函数返回它找到的数组中的第一个索引 valueToFind, 或者 -1 否则。

const arr = ['A', 'B', 'C'];

arr.indexOf('A'); // 0
arr.indexOf('B'); // 1
arr.indexOf('D'); // -1

// To check whether an array contains a given value, you should use the
// below check.
arr.indexOf('D') !== -1; // false

检查是否 arr 包含 v,你会使用 arr.indexOf(v) !== -1,在某些代码库中,您可能会看到 ~arr.indexOf(v) 相反,在哪里 ~JavaScript 按位 NOT 运算符

给定一个整数 v, ~v === -(v + 1), 所以 ~v === 0 除非 v === -1,这是避免写出的一个方便的技巧 !== -1
但是,使用按位 NOT 通常是不好的做法,因为它会牺牲可读性来保存 4 个字符。

const arr = ['A', 'B', 'C'];

if (~arr.indexOf('A')) {
  // Runs
}
if (~arr.indexOf('D')) {
  // Does not run
}

不像 Array#includes(), Array#indexOf() 使用与 === 运算符来检查是否相等。 换句话说, Array#indexOf() 找不到 NaN 在一个数组中。

// Array contains 1 element, 'NaN'
const arr = [parseInt('foo')];

arr.indexOf(NaN); // -1
arr.indexOf(Number.NaN); // -1

Array#includes() 通常是更好的选择,因为您不需要输入 !== -1 并且因为它具有更好的相等语义。 但是由于 Array#includes() 在 ES2016 中引入, 的任何版本的 Internet Explorer 或 Node.js 版本中均不支持。 如果你使用 Array#includes(),请确保 为旧浏览器添加 polyfill

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

涫野音

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

eins

文章 0 评论 0

世界等同你

文章 0 评论 0

毒初莱肆砂笔

文章 0 评论 0

初雪

文章 0 评论 0

miao

文章 0 评论 0

qq_zQQHIW

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文