var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
alert(people.indexOf(person)); //-1
为什么这个是返回-1啊, indexOf不是要求===,即类型和值都相等,
var person = { name: "Nicholas" };
person === { name: "Nicholas" } // 为什么是false ,这里应该如何理解 ?
首先说为什么是-1,因为你indexOf检索的是一个对象,也就是引用类型,换句话说检索得是person 的内存地址,而不是person 内存地址指向的内容,所以是-1。就是说下个问题person === { name: "Nicholas" }为false也是这个问题导致的,当你整个对象,引用类型比较是其实是比较内存地址。你需要去了解下引用类型和值类型的区别,你就明白了。
indexof() 是返回某个指定的字符串值在字符串中首次出现的位置,果要检索的字符串值没有出现,则该方法返回 -1。
这种情况应该使用findIndex
people.findIndex((item) => {
return item.name === person.name
})
//0
https://www.cnblogs.com/-ioi-/p/3385401.html
不是同指向性的对象是不相等的,比如
let a ={
'name': 45
}
let b = {
'name': 45
}
a和b是不相等的
1 js 中 indexof() 只能处理字符串类型,如果没有检索到目标字符串,则返回 -1。
2 === 用来检测两个操作数是否严格相等,对于Array,Object等高级类型,==和===是有区别的,对于==,将高级转化为基础类型,进行“值”比较,因为类型不同,===结果为false
等分开锅!!!!!
js 中 indexof() 只能处理字符串类型,如果没有检索到目标字符串,则返回 -1。