js引用类型姿势
栈
1)var a=new Array(),a.push(a,b,...),a.pop()
queue
1)var a=new Array(),
a.push(a,b,...),a.shift()
a.unshift(a,b....),a.pop()反向队列
数组方法
1)由于按照string排序var a=[3,1,2,6,5,11];//1,11,2,3,4,5,6
像c++一样加个控制函数a.sort(function) 写a-b简单方法
2)倒转reverse
3)连接,c=a.concat(b),a不改变
4)slice位置复制
var a=[3,1,2,6,5,11];
var b=a.slice();//复制一遍
var c=a.slice(1);//重第二个开始
var d=a.slice(1,3);//从1到3-1复制
5)splice 和上面的有相同,切出部分一样,不过他会改变原来的a数组
var a=['a','b','c','d'];
var b=a.splice(0,1);//bcd删除一个位置
var c=a.splice(1,0,'0');//b0cd加入
var d=a.splice(1,1,'zz');//bzzcd删除再加入
arrayObject.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
item1, ..., itemX | 可选。向数组添加的新项目。 |
6)indexOf(a,b) a为查元素在那个位置,b为从那个开始,他的儿子lastIndexOf()
var a=['a','b','c','d'];
alert(a.indexOf('b'));
7)数组迭代方法 :变量.方法(function(item,index,array){........})三个形参分别当前项,当前项位置,数组对象本身
map():返回一个新的Array,每个元素为调用func的结果
filter():返回一个符合func条件的元素数组
some():返回一个boolean,判断是否有元素是否符合func条件
every():返回一个boolean,判断每个元素是否符合func条件
forEach():没有返回值,只是针对每个元素调用func
8)数组归并: 变量.reduce/reduceRight(function(prev,cur,index,array){....})形参分别前一项,后一项,当前项位置,数组对象本身
var a=[3,1,2,6,4,5];
var b=a.reduce(function (per,cur,index,array) {
return per+cur;
});