【坑爹问题】实际开发过程中遇到,indexOf查找不到对应Object问题。博主捣腾了好久乃至怀疑人生。PS:说白了也是自己基础不牢固,希望能帮到大家
let arr = [{name:'zhangsan'}];
let obj = {name:'zhangsan'};
let index = arr.indexOf(obj);
// index = -1 看到这里是不是开始怀疑自己了
//再来个例子
let arr1 = {name:'zhangsan'}
let arr2 = {name:'zhangsan'}
let arr3 = arr1;
console.log(arr1 === arr2)
// false
console.log(arr1 === arr3)
// true
【解决方式】把Object转化成 String 再 indexOf
【总结】indexOf 是对索引的值进行 === ,由于 Object是引用类型,数组元素中的Object 与变量中的 Object 不是在同一堆内存中所以 === 为 false 故两个不在同一堆内存中的 Object 即便是值相同indexOf索引出来的的值是 -1
【温馨提示】上文所讲述的观点如有不对的地方,欢迎各位提醒
【有趣时刻】如果昨天是明天的话那么今天就是星期五,请问文中的今天是星期几?