如何在 JavaScript 中检查数组是否包含值?

2025-06-10

如何在 JavaScript 中检查数组是否包含值?

替代文本

以下是检查 #JavaScript 数组是否包含值的代码。您可以使用新的数组includes方法 😋 对于旧版浏览器和 IE,您可以使用indexOf👍

const array = ['🥗', '🍔', '🍰'];

// Modern Browser
array.includes('🍰'); // true

// Older Browser
array.indexOf('🍰') !== -1; // true

includes与其他原始类型

除了字符串之外,includes它还适用于其他原始类型

const symbol = Symbol('symbol');

const array = [
  'string',
  200,
  0,
  undefined,
  null,
  symbol
];

使用includes

array.includes('string'); // true
array.includes(200); // true
array.includes(0); // true
array.includes(undefined); // true
array.includes(null); // true
array.includes(symbol); // true

使用indexOf

array.indexOf('string') !== -1; // true
array.indexOf(200) !== -1; // true
array.indexOf(0) !== -1; // true
array.indexOf(undefined) !== -1; // true
array.indexOf(null) !== -1; // true
array.indexOf(symbol) !== -1; // true

注意事项indexOf

到目前为止,我已经向你展示了两者可以互换的值includesindexOf然而,有一个值是它们不同的。

const array = [NaN];

// ✅
array.includes(NaN); // true

// 😱
array.indexOf(NaN) !== -1; // false

使用以下方法检查对象数组some()

对于适用于其他数据类型的更通用的解决方案,您可能希望使用some

“.some()”:测试数组中是否至少有一个元素通过了所提供函数实现的测试。它返回一个布尔值。

const array = ['🥗', '🍔', '🍰'];

array.some(food => food === '🍰'); // true

此方法非常适合对象阵列。

const array = [{ name: 'js' }, { name: 'css' }];

array.some(code => code.name === 'js'); // true
array.some(code => code.name === '🤖'); // false

在之前的代码说明中,我谈到了一种objects使用进行检查的快速而又肮脏的方法JSON.stringify()

如何在 JavaScript 中比较两个对象

根据这个概念,我们还可以用它来比较数组中的对象元素,如下所示:

const array = [{ name: 'js' }, { name: 'css' }];

array.some(code => JSON.stringify(code) === JSON.stringify({ name: 'css' }));
// true

区分大小写

和 都includes区分indexOf大小写:

const array = ['SAMANTHA'];

array.includes('samantha'); // false
array.indexOf('samantha') !== -1; // false

为了使其不区分大小写,您可以考虑像这样更改数组的大小写:

const array = ['SAMANTHA'];

const sameCaseArray = array.map(value => value.toLowerCase());
// ['samantha']

sameCaseArray.includes('samantha'); // true
sameCaseArray.indexOf('samantha') !== -1; // true

但如果您使用some,您可以在一行中完成:

const array = ['SAMANTHA'];

array.some(value => value.toLowerCase() === 'samantha'); // true

浏览器支持

对所有现代浏览器的支持includes都非常好。但是,如果您需要 IE 或更老的浏览器,则需要使用indexOf

我可以使用吗?Array.prototype.includes

社区意见

  • @lolinoid: contains > @prvnbist 这是一种 DOM 节点方法,最常见的例子是获取一个类名列表,该列表将是一个节点列表,然后你可以使用 contain 方法查看它是否包含类名。或者你可以将其转换为数组,然后使用 includes 方法。

  • 你可以使用in运算符循环遍历对象,检查特定属性键是否存在。(由@fvbix分享的知识)

const object = { kiwi: '🥝', pear: '🍐', cheese: '🧀' },;

'kiwi' in object; // true

// Use it as a conditional
if ('kiwi' in object) {
  // do something if property key exists
}

资源


感谢阅读❤
打个招呼!Instagram | Twitter |博客| SamanthaMing.com

鏂囩珷鏉ユ簮锛�https://dev.to/samanthaming/how-to-check-if-an-array-includes-a-value-in-javascript-4k7l
PREV
如何在 JavaScript 中检查变量是否为数组
NEXT
Flexbox:与自动边距对齐