注意: 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(这个结果是对的)