84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
当数组元素是数字或者字符串的时候都可以,要是 object 就不行了
js 中对象是引用类型值,两个对象的比较是引用的内存地址的比较。就像下面的代码:
var obj1={}; var obj2={}; obj1===obj2 //false
这两个对象虽然看起来相等,但是引用的是堆内存中不同的对象,所以不相等。
inArray 的实现应该就是遍历数组,把数组的每一项与目标值进行比较,如果相等就返回索引值,不相等就返回 -1,由于上面的原因,两个分别声明的对象引用值并不相等,所以返回 -1。
一般这样理解,数组是一个对象,但是对象不一定是数组。inArray作用于数组
源码中isArray: Array.isArray,用的是Array.isArray, 里面是object也可以啊,但外层必须是[]。
var obj = [{a:1}]; console.log(Array.isArray(obj)) // true
js 中对象是引用类型值,两个对象的比较是引用的内存地址的比较。就像下面的代码:
这两个对象虽然看起来相等,但是引用的是堆内存中不同的对象,所以不相等。
inArray 的实现应该就是遍历数组,把数组的每一项与目标值进行比较,如果相等就返回索引值,不相等就返回 -1,由于上面的原因,两个分别声明的对象引用值并不相等,所以返回 -1。
一般这样理解,数组是一个对象,但是对象不一定是数组。inArray作用于数组
源码中isArray: Array.isArray,用的是Array.isArray, 里面是object也可以啊,但外层必须是[]。