数组删除指定元素问题。

定义了两个数组,在数组原型链中添加了一个remove函数,现在要删除数组中指定项,如果数组元素是数字没有问题,如果数组元素是对象就remove函数就只有一个有用,什么原因?

https://img1.mukewang.com/5c88bc5f0001515a08000497.jpg

https://img2.mukewang.com/5c88bc610001e5ae08000245.jpg

扬帆大鱼
浏览 756回答 2
2回答

月关宝盒

因为 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,cps:该放代码的地方不要放截图

largeQ

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

相关分类

JavaScript