一、基本概念
includes() 方法用来判断一个数组是否包含一个指定的值,如果包含则返回 true,否则返回 false。
const array1 = [1, 2, 3]; console.log(array1.includes(2)); // expected output: true const pets = ['cat', 'dog', 'bat']; console.log(pets.includes('cat')); // expected output: true console.log(pets.includes('at')); // expected output: false
注意:在接收第二个参数时,表示从该位置开始向后查找,如果有该值则返回 true,否则返回 false。
const array1 = [1, 2, 3]; console.log(array1.includes(2, 2)); // expected output: false const pets = ['cat', 'dog', 'bat']; console.log(pets.includes('cat', 2)); // expected output: false
二、查找非NaN元素
includes()方法不会将NaN、undefined、null等非数字元素进行查找,只查找有效元素,因此不会返回false。
const arr = [NaN, 1, 2, 3, undefined, null]; const result = arr.includes(NaN); console.log(result); // expected output: true
三、使用includes检测字符串
String.includes() 方法也可以对字符串进行查找,若找到就返回 true,没找到就返回 false,用法与数组相同。
const str1 = 'Hello, world!'; console.log(str1.includes('Hello')); // expected output: true const pets = 'cat dog bat'; console.log(pets.includes('at')); // expected output: true console.log(pets.includes('at', 3)); // expected output: false
四、使用includes检测对象
需要注意的是,如果使用includes() 方法来检查对象时,仅针对指针地址的匹配,即不是真正的对象比较。只有当两个对象的引用相同时才能够匹配
const obj1 = { name: 'Tom', age: 18 }; const obj2 = obj1; const arr = [obj1]; console.log(arr.includes(obj2)); // true const arr2 = [{ name: 'Tom', age: 18 }]; console.log(arr2.includes({ name: 'Tom', age: 18 })); // false
五、使用includes判断字符串中是否包含特定字符集
const str1 = 'Hello, world!'; console.log(str1.includes('or', 4)); // false console.log(str1.includes('or', 3)); // true
六、检测数组中是否包含重复元素
使用Set对象作为中间元素去掉数组中的重复元素,最后将数组去重后的长度和原数组长度进行比较,即可判断是否含有重复元素。
const hasDup = (arr) => arr.length !== [...new Set(arr)].length; console.log(hasDup([1,2,3,4])); // false console.log(hasDup([1,2,3,3,4])); // true
七、小结
includes()是es6引入的新方法之一,用于判断数字、字符串、对象等数据元素是否包含某一元素。通过多个方面的阐述,我们深入了解了它的使用方法,并能够在实际开发中灵活运用。