在 ES9 中,JavaScript 新增了 Array.prototype.includes() 方法,该方法可以判断一个数组是否包含某个值,返回值为布尔类型。
语法
array.includes(searchElement, fromIndex)
- searchElement:需要查找的元素。
- fromIndex(可选):开始查找的索引值,默认为0。若传入负数,则表示倒数第几位。
返回值
如果数组中包含了 searchElement,返回 true;否则返回 false。
示例代码
let arr = [1, 2, 3]; console.log(arr.includes(2)); // true console.log(arr.includes(4)); // false console.log(arr.includes(1, 1)); // false
深入理解
与 indexOf() 方法不同的是,includes() 方法可以判断 NaN 类型的元素。
let arr = [NaN]; console.log(arr.includes(NaN)); // true console.log(arr.indexOf(NaN)); // -1
此外,在 includes() 方法中,第二个参数表示开始查找的位置,而 indexOf() 中则表示从哪个位置开始查找。如果使用 indexOf() 需要判断返回值是否为 -1,而 includes() 方法则比较方便。
用处
- 判断数组中是否存在某个值。
if (arr.includes('value')) { // ... }
- 判断数组中是否存在重复的值。
let isDuplicate = arr => arr.length !== new Set(arr).size; console.log(isDuplicate([1, 2, 3])); // false console.log(isDuplicate([1, 2, 3, 3])); // true
- 判断一个元素是否在两个数组中存在。
let isExist = (a, b, value) => a.includes(value) || b.includes(value); console.log(isExist([1, 2, 3], [2, 3, 4], 2)); // true console.log(isExist([1, 2, 3], [2, 3, 4], 5)); // false
总结
ES9 中新增的 Array.prototype.includes() 方法方便了我们在数组中查找元素,同时可以判断数组中是否存在 NaN 类型的元素,且与 indexOf() 相比更为简洁方便,可以优化代码编写。我们可以通过它方便地判断数组是否包含某一元素,判断数组中是否存在重复元素,以及判断一个元素是否在两个数组中存在。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6534f0c57d4982a6eba956e0