摘要:在本教程中,您将学习如何在 JavaScript 中检查数组是否包含某个值。
JavaScript 中的值可以是原始值,例如 数字 或 字符串。它也可以是 对象。
本教程将向您展示如何检查数组是否包含某个值,无论是原始值还是对象。
1) 检查数组是否包含字符串
要检查数组是否包含原始值,您可以使用数组方法,例如 array.includes()
以下示例使用 array.includes() 方法来检查 colors 数组是否包含 'red'
const colors = ['red', 'green', 'blue'];
const result = colors.includes('red');
console.log(result); // trueCode language: JavaScript (javascript)如果您想在检查时忽略字母大小写,您可以
- 首先,使用
map()和toLocaleLowerCase()方法返回一个包含所有元素的小写的新数组。 - 然后,使用
includes()方法进行检查。
以下示例说明了这些步骤
const colors = ['Red', 'GREEN', 'Blue'];
const result = colors.map(e => e.toLocaleLowerCase())
.includes('green');
console.log(result); // trueCode language: JavaScript (javascript)在本例中,colors 数组不包含 'green',但包含 'GREEN'。
首先,map() 方法将 colors 数组中的每个元素都改为小写,并返回一个新数组。然后,includes() 方法返回 true,因为结果数组包含元素 'green'。
2) 检查数组是否包含数字
以下示例展示了如何使用 includes() 方法检查数组是否包含数字
const ratings = [1,2,3,4,5];
let result = ratings.includes(4);
console.log(result); // true
result = ratings.includes(6);
console.log(result); // falseCode language: JavaScript (javascript)3) 检查数组是否包含对象
以下示例使用 includes() 方法检查数组是否包含对象
const john = {
'name': 'John Doe',
'email': '[email protected]'
};
const jane = {
'name': 'Jane Doe',
'email': '[email protected]'
};
const list = [john, jane];
let result = list.includes(john);
console.log(result); // trueCode language: JavaScript (javascript)在本例中,list.includes(john) 返回 true,因为 list 数组包含 john 对象引用。
实际上,您通常不会搜索引用,而是根据对象的属性值搜索对象。以下示例将不起作用
const list = [{
'name': 'John Doe',
'email': '[email protected]'
}, {
'name': 'Jane Doe',
'email': '[email protected]'
}];
let result = list.includes({
'name': 'John Doe',
'email': '[email protected]'
});
console.log(result); // falseCode language: JavaScript (javascript)在本例中,以下对象
{
'name': 'John Doe',
'email': '[email protected]'
}Code language: JavaScript (javascript)…看起来像 list 数组中的第一个元素。但是,includes() 方法返回 false,因为 list 不包含对所搜索对象的引用。
要检查数组是否包含对象,请执行以下步骤
- 首先,创建一个辅助函数,该函数通过其属性比较两个对象。
- 其次,使用
array.some()方法根据属性值查找所搜索的对象。
要根据属性值比较对象,请使用以下辅助函数
const isEqual = (first, second) => {
return JSON.stringify(first) === JSON.stringify(second);
}Code language: JavaScript (javascript)如果 first 和 second 对象具有相同数量的属性且属性值相同,则 isEqual() 函数返回 true。
isEqual() 函数的局限性在于,比较对象的属性顺序必须相同。
请注意,某些库提供了允许您根据属性值比较两个对象的函数。
例如,Lodash 具有一个 _.isEqual() 方法,允许您比较对象,如果它们相等,则与使用 JSON.stringify() 相比,其性能更高。
以下示例使用 array.some() 方法将数组的每个元素与所搜索的对象进行匹配
const result = list.some(e => isEqual(e, {
'name': 'John Doe',
'email': '[email protected]'
}));
console.log(result); // trueCode language: JavaScript (javascript)将所有内容整合在一起
const list = [{
'name': 'John Doe',
'email': '[email protected]'
}, {
'name': 'Jane Doe',
'email': '[email protected]'
}];
const isEqual = (first, second) => {
return JSON.stringify(first) === JSON.stringify(second);
}
const result = list.some(e => isEqual(e, {
'name': 'John Doe',
'email': '[email protected]'
}));
console.log(result); // trueCode language: JavaScript (javascript)摘要
- 对于原始值,请使用
array.includes()方法检查数组是否包含某个值。 - 对于对象,请使用
isEqual()辅助函数来比较对象,并使用array.some()方法来检查数组是否包含该对象。