javascript(三):数组与伪数组

193 阅读1分钟

var a = Array(3)生成的数组是不含'0','1','2'的

就像window.Object window.Function String一样,他们都是全局对象

到底什么是数组

用Array构造出来的对象,就是数组

数组和对象的差别

为什么上方是数组,而下方就是对象呢,只是因为构造方法的不同吗

答案:因为他们指向的共用属性不同

数组之所以为数组,是因为他拥有数组的特点。

对象不拥有数组的特点。

说明Array还是对象,只不过是一个拥有特殊原型链的对象。

数组之所以为数组,因为你使用了let i=0;.....)其实用别的也可以,其实用for key in a也可以

伪数组

如果__p无法链到Array.prototype(没有.push方法),那么你就是伪数组

数组api之forEach

他需要接受一个函数(对象),这个函数必须接受两个参数(三个),第一个参数一定是数组的value,第二个参数一定是数组的key(第三个参数是数组自己)

原理解释

数组api之sort

更改原值,原地排序。

x-y; y-x;排序的依据是什么无所谓,要尝试,第一个错了就用第二个。

join

主要用于数组变成字符串

concat

连接

特殊用法:一般用来复制产生一个新的数组

map

map(地图,即映射,就是按比例缩小)

和forEach差不多,但是有返回值;forEach(undefined),map(新数组)

filter

过滤,不改变原来的数组

reduce

没有key,只有value

数组空麻袋,可以往里面放入value模拟其他api的效果