数组有稀疏数组和稠密数组。还有类数组对象(document.getElementsByTagName得到就是类数组对象。数组和类数据对象可以通过Object.prototype.toString()区分)。数据可动态扩展,类数组对象是不能直接使用数组方法的,可以使用Array.prototype.slice.call(类数组对象,0)来返回一个数组
var a=new array(6) 此时数组索引未建立
即a[1]还没有。如果直接定义a[1]不定义a[0]等其他,数组为稀疏数组。
var a=[,,2,]这样定义为稠密数组。a[0]为undefined.
length数组自己可以维护。a数组长度为3,因为js数组允许以一个逗号结束。
var b=[1,2,3,4];
b.length=2;则b会变成 [1,2].
数组的索引是非负小于2的32次方-2的一个数。
数组其实也是对象,只不过属性名恰巧为整数型的一个字符串。var obj={"1":2};var array=[1] obj[1],array[1] 很一样。delete a[1] 和a[1]=undefined还不一样。delete是将数组变成了稀疏数组(不会导致后续索引前移)。而后一种方法只是赋值undefined。
数组中的数据可以放置任何数据 [1,[1,"a"]];
js中的多维数组基于此实现。
1、数组方法 sort() 排序,默认为字母表顺序排序,参数可防止一个function(x,y){} 来传入排序规则,想让x排在y前,则返回-1;返回排序完成的数组,b.sort() 完成后b内部排序变化,返回b
2、join方法。将数据中的元素连接成字符串,join方法不区分级别。[1,[1,"a"]]; 为 “1,1,a” join可以接受一个参数,用于替换连接的逗号,缺省为逗号。返回值为字符串。
3.push ()在字符串默认添加数据。不识别级别。返回值为length。参数有多个,放什么添加什么。(我所说的级别是数组内部的数组)
4.reserve()倒序,更改数组内部排序,返回数据
5.pop()在尾部删除,返回删除元素
6.shift和unshift 类似push pop 会导致索引后移。
7. concat 参数为多个。可以为字符,也可以为数据,识别一个级别。一起全部添加。(0,["a","b",["c","d"]]) 添加为 0, "a", "b", Array[2]] 不更改旧数组,返回新的数据
8. slice 参数为数据,在数组中截取片段。第二个缺省为末尾。负数从结尾尅是 返回片段
9. splice 删除或添加数据到指定位置。第一个参数为指定位置,第二个参数为删除位数,缺省删除后
10. ECMAScript 5 filter 过滤,返回满足条件的子集。
对于稀疏数据过滤稀疏部分,返回稠密数组。 array.filter(function(){return true }) 将稀疏数据转换为稠密数据 数据会对每一个元素调用参数方法。满足条件则放入子集中
11. ECMAScript 5 some,every 方法,参数为一个function ,将每一个元素放入function
如果有一个满足 some停止执行返回true.every 有一个为false则返回false,停止遍历。 返回值为bool值
12. ECMAScript 5中forEach方法 参数为一个function(){} 数组将每一个元素放入。但是,不能通过break来终止遍历,只能通过throw error;
13.ECMAScript 5 reduce方法类似linq中的聚合函数。参数为function(x,y){} 和 一个可选参数。如果可选参数不为空,则可选参数作为初始值跟第一个元素操作后,返回值和第二个元素操作。最终返回一个结果。如果不填写,则以第一个元素为初始值,从第二个元素开始遍历。
14 ECMAScript 5 reduceRight 和reduce类似,不过是从右开始。
15.ECMAScript 5 map() 方法,将每一个元素放入function中,并返回新数组,不改变原数据
16.ECMAScript 5 indexOf, lastIndexOf
字符串也可以当数组,但是只读数组
数据可以看做是对象,所以可以用 in 1 in array 是不是有1索引
posted on
浙公网安备 33010602011771号