方法一:indexOf()
stringObject.indexOf(searchvalue,fromindex)
返回给定元素能找在数组中找到的第一个索引值,否则返回-1。
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
方法二:includes()
arr.includes(searchElement, fromIndex)
返回true或者false。
参数 | 描述 |
---|---|
searchElement | 必须。需要查找的元素值。 |
fromIndex | 可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。 |
对比:
1、返回值
一个是返回数值型的,一个是返回布尔型的,所以在if条件判断的时候includes要简单得多,而indexOf 需要多写一个条件进行判断。
//indexOf()
var ary = [1];
if (ary.indexOf(1) !== -1) {
console.log("数组存在1")
}
//includes()
if (ary.includes(1)) {
console.log("数组存在1")
}
2、判断NAN
如果数组中有NaN,你又正好需要判断数组中NaN是否有存在,这时你使用indexOf是无法判断的,你必须使用includes这个方法。
var ary1 = [NaN];
console.log(ary1.indexOf(NaN))//-1
console.log(ary1.includes(NaN))//true
3、判断空值
当数组的有空的值的时候,includes会认为空的值是undefined,而indexOf不会。
var ary1 = new Array(3);
console.log(ary1.indexOf(undefined));//-1
console.log(ary1.includes(undefined))//true