indexOf 的使用

1,354 阅读1分钟

注意: indexOf() 使用的是严格相等'==='进行比较

(function(){
	let array = [1,2,3,4,5];  
	console.log(array.indexOf(2));  // 1
	console.log([{name: 'John'},{name : 'John'}].indexOf({name:'John'}));   // -1
	console.log([[1],[2],[3],[4]].indexOf([3]));   // -1
	console.log("abcdefgh".indexOf('e'));   // 4
})();
  • 补充
let arr = [1, 0, false];

alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1

alert( arr.includes(1) ); // true

如果我们想检查是否包含某个元素,并且不想知道确切的索引,那么 arr.includes 是首选。

此外,includes 的一个非常小的差别是它能正确处理NaN,而不像 indexOf/lastIndexOf:

const arr = [NaN];
alert( arr.indexOf(NaN) ); // -1(应该为 0,但是严格相等 === equality 对 NaN 无效)
alert( arr.includes(NaN) );// true(这个结果是对的)