为了账号安全,请及时绑定邮箱和手机立即绑定

数组删除指定元素问题。

数组删除指定元素问题。

扬帆大鱼 2019-03-02 15:11:39
定义了两个数组,在数组原型链中添加了一个remove函数,现在要删除数组中指定项,如果数组元素是数字没有问题,如果数组元素是对象就remove函数就只有一个有用,什么原因?
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

因为 A2 中没有 A1[1],所以即使看起来一样,也是删不掉的;A1 中 当然有 A1[1];


A1.remove(num);//成功,等价于A1.remove(A1[1]);

A2.remove(num);//失败,等价于A2.remove(A1[1]);

因为任意两个对象不相等,除非引用相同;


也就是说,


{x:1}!={x:1}//true

除非:


let a={x:1};

b=a;

c=a;

b!=c;//false,因为 a,b,c 指向的都是同一个对象

所以:


[{x:1}].indexOf({x:1});// -1


[a].indexOf(a);//0 ,还是上面那个 a,b,c

[a].indexOf(b);//0 ,还是上面那个 a,b,c

[a].indexOf(c);//0 ,还是上面那个 a,b,c

ps:该放代码的地方不要放截图


查看完整回答
反对 回复 2019-03-13
?
largeQ

TA贡献2039条经验 获得超8个赞

string 和 number 是通过值来判断,而对象一般通过指针指向的内存地址来判断,你比较的两个对象的指针指向位置不一样,所以返回为false。我们判断两个对象是否相等,一般遍历两个对象的属性,看他们是否相等,这个你可以参考loadsh的isEqual方法的实现。


查看完整回答
反对 回复 2019-03-13
  • 2 回答
  • 0 关注
  • 754 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号