关于indexof()和lastIndexof()

pommmm 2020-07-09 09:07:38


如图所示,我把morepeople和people都输入看了一下,发现两个变量都是数组并且数组里面存的值是一样的,那为什么两个数组用indexof查找位置的时候输出的结果又不一样呢?
...全文
792 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
HongJin_zhu 2020-07-09
  • 打赏
  • 举报
回复
记得结贴。 数组,对象比的是地址。 基础类型比的是数值。
pommmm 2020-07-09
  • 打赏
  • 举报
回复
引用 6 楼 医手 的回复:
[quote=引用 4 楼 pommmm 的回复:] 可以理解为当我定义如下两个对象的时候 var a = {a:1}; var b = {a:1}; a,b里面存放的是后面对象的地址,因为是两个新建的对象,所以a,b存放的对象内存地址不同,所以 console.log(a==b); //false var a = {a:1}; var b =a; 相当于把a的地址赋给了b,两个变量指向的是同一个地址,所以console.log(a == b);//true
理解得很透彻啊,这才是最正规的解释,我那是在瞎吹牛。果然还是做不得老师。我不是怕一说地址什么的学生就头痛了嘛[/quote] 哈哈哈,还好还好,刚刚看了引用类型所以印象还比较深,主要是不清楚这个indexof()函数在进行判定的时候判定的是数组里面变量地址指向的具体值还是变量存放的地址,这么一说好像有点理解了,还得悟悟
医手 2020-07-09
  • 打赏
  • 举报
回复
引用 4 楼 pommmm 的回复:
可以理解为当我定义如下两个对象的时候 var a = {a:1}; var b = {a:1}; a,b里面存放的是后面对象的地址,因为是两个新建的对象,所以a,b存放的对象内存地址不同,所以 console.log(a==b); //false var a = {a:1}; var b =a; 相当于把a的地址赋给了b,两个变量指向的是同一个地址,所以console.log(a == b);//true
理解得很透彻啊,这才是最正规的解释,我那是在瞎吹牛。果然还是做不得老师。我不是怕一说地址什么的学生就头痛了嘛
pommmm 2020-07-09
  • 打赏
  • 举报
回复
引用 3 楼 医手 的回复:
我发现我真的好适合当老师。没有北大青鸟啥啥的愿意招我的
那要不我来拜个师
pommmm 2020-07-09
  • 打赏
  • 举报
回复
引用 2 楼 医手 的回复:
var a={a:1}; 
var b={a:1}; 
console.log(a==b); // false
b.a=2; 
console.log(a,b); // {a: 1} {a: 2}
当是两个克隆体时,你砍掉其中一个人的手,另一个人的手是还在的。所以这两个克隆体是不相等的。
var a={a:1}; 
var b=a; 
console.log(a==b); // true
b.a=2; 
console.log(a,b); // {a: 2} {a: 2}
当我们共同的朋友张三的手被砍掉时,你的朋友张三的手没了,我的朋友张三的手也没了,所以这两个张三是真的相等的。
可以理解为当我定义如下两个对象的时候 var a = {a:1}; var b = {a:1}; a,b里面存放的是后面对象的地址,因为是两个新建的对象,所以a,b存放的对象内存地址不同,所以 console.log(a==b); //false var a = {a:1}; var b =a; 相当于把a的地址赋给了b,两个变量指向的是同一个地址,所以console.log(a == b);//true
医手 2020-07-09
  • 打赏
  • 举报
回复
我发现我真的好适合当老师。没有北大青鸟啥啥的愿意招我的
医手 2020-07-09
  • 打赏
  • 举报
回复
var a={a:1}; 
var b={a:1}; 
console.log(a==b); // false
b.a=2; 
console.log(a,b); // {a: 1} {a: 2}
当是两个克隆体时,你砍掉其中一个人的手,另一个人的手是还在的。所以这两个克隆体是不相等的。
var a={a:1}; 
var b=a; 
console.log(a==b); // true
b.a=2; 
console.log(a,b); // {a: 2} {a: 2}
当我们共同的朋友张三的手被砍掉时,你的朋友张三的手没了,我的朋友张三的手也没了,所以这两个张三是真的相等的。
医手 2020-07-09
  • 打赏
  • 举报
回复
var a={a:1}; var b={a:1}; console.log(a==b);
原因就在于你无法理解为什么上面的代码会输出false。 简单来说,就算是克隆出来的两个个体,也是不同的两个生命,是不会相等的。 只有当我们有共同的朋友张三,那么你的朋友张三才会等于我的朋友张三
var a={a:1}; var b=a; console.log(a==b);

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧