Array.includes 对数组元素进行严格比较。
var array1 = [1, 2, 3];
console.log(array1.includes(2)); // return true
console.log(array1.includes("2")); // return false
但我希望第二种情况也返回true。我的主要目标是知道一个数组是否包含一个元素。请建议如何实现。
Array.includes 对数组元素进行严格比较。
var array1 = [1, 2, 3];
console.log(array1.includes(2)); // return true
console.log(array1.includes("2")); // return false
但我希望第二种情况也返回true。我的主要目标是知道一个数组是否包含一个元素。请建议如何实现。
由于includes
总是使用严格相等性,因此无法使用它; 您可以改用some
:
console.log(array1.some(e => e == "2"));
some
是一个方法,对于数组中的每个元素,它调用您提供的回调函数,直到您的回调函数返回一个真值为止。在这种情况下,some
停止循环并返回 true
。如果您的回调从未返回真值(包括因为从未调用,因为数组为空),some
返回 false
。
some
在 ES5(2009 年)中添加。
Live example:
const array1 = [1, 2, 3];
console.log(array1.some(e => e == "2"));
如果数组总是由数字组成并且您确定要传递一个字符串进行检查,则也可以使用 parseInt()
:
console.log(array1.includes(parseInt("2")));
parseInt
,它也会起作用,但这是不正确的,因为parseInt
期望参数是一个字符串。
array1.includes(+"2")
- Zenoo+
获取其整数值将返回NaN
。除此之外,我没有看到任何缺点。 - Zenoo