- 创建数组及修改
var a=new Array();
console.log(a);
a=new Array(3);
console.log(a);//长度为3的数组
a=new Array("abc","xyz");
console.log(a);
//同上,简单的写法
a=Array(3);
a=Array("abc","xyz");
//更简单的写法
a=[];
a=[3];
a=["abc","xyz"];
console.log(a.length);//数组的长度
console.log(a[1]);//数组的第二项的值
a.length=1;//改变长度
console.log(a[1]);//undefined
a[a.length]="asd";//在最后添加一个值asd
console.log(a);//结果
a[a.length]="zxc";//再添加一个
console.log(a);//结果
a=["0","1","2"];
a[99]=99;//设置第100位为99
console.log(a.length);//长度为100
console.log(a[4]);//undefined,其他位置其实未定义
- 类型检测
a=["qwe","asd","zxc"];
console.log(a instanceof Array);//检测是否是数组,但多框架的时候回有BUG
console.log(Array.isArray(a));//这方法比较好,但要考虑兼容性问题,IE8和比较老的浏览器不支持
- 转换方法
console.log(a.toString());//qwe,asd,zxc
console.log(a.valueOf());//["qwe","asd","zxc"]
console.log(a);//["qwe","asd","zxc"]
//alert(a.toString);
//alert(a.valueOf());
//alert(a);
console.log(a.join("||"));//qwe||asd||zxc,改变了分隔符
a.length=5;
console.log(a.join("||"));//qwe||asd||zxc||||
console.log(a.toString());//qwe,asd,zxc,,
- Array栈操作
var a=[];
var length=a.push("wer","sdf");//添加两项
console.log(length);//长度
console.log(a);//
length=a.push("w");//再添加
console.log(length);//长度
console.log(a);//
var item=a.pop();//移除最后一个
console.log(item);//移除项的值
console.log(a);//
item=a.pop();//再移除
console.log(item);//移除项的值
console.log(a);//
- Array队列操作
a=["z","x","c"];
item=a.shift();//删除第一项
console.log(item);//
console.log(a);//
length=a.unshift("as");//第一项前添加元素
console.log(length);//
console.log(a);//
- Array的反转和排序
a=[1,2,3,4,5];
console.log(a.reverse());//反转,非排序
a=[1,2,3,4,10,5];
console.log(a.reverse());//5,10,4,3,2,1反转,非排序
console.log(a.sort());//1,10,2,3,4,5 这种就出现问题了,sort默认都是按照字符来进行培训,10的字符比2小
//sort内可以传比较的方法,类似于java的覆写
function compare(a,b){
if(a<b) return 1;
else if(a>b)return -1;
else return 0;
}
console.log(a.sort(compare));//10,5,4,3,2,1 这样比较大小就完全自定义了
- 数组的连接与截取
a=[1,2];
console.log(a.concat(5,6,[3,4]));//[1,2,5,6,3,4]
a=[1,2,3,4,5,6];
console.log(a.slice(3));//[4,5,6] 从第四位开始截取
console.log(a.slice(3,5));//[3,4] 四到五位
console.log(a.slice(5,3));//[] 空数组
console.log(a.slice(7));//[] 截取了一个空的
- 数组的删除插入替换
- 删除
a=[1,2,3,4,5,6,7];
aa=a.splice(1,2);//删除第二位,两个元素
console.log(a);//[1,4,5,6,7] 删除后的a
console.log(aa);//[2,3] 删除的元素
- 插入
a=[1,2,3,4,5,6,7];
aa=a.splice(1,0,"7","8","9");// 在第二个位置 添加三个元素 ,第二个参数代表插入
console.log(a);//[1,"7","8","9",2,3,4,5,6,7] 插入后的a
console.log(aa);//[]
- 替换
a=[1,2,3,4,5,6,7];
aa=a.splice(1,1,"7","8","9");// 在第二个位置 替换三个元素 ,第二个参数代表替换
console.log(a);//[1,"7","8","9",3,4,5,6,7] 插入后的a,仅仅把2替换掉
console.log(aa);//2 ,被替换的元素
- 位置方法
a=[1,2,3,4,5,4,3,2,1];
console.log(a.indexOf(2));//1 在第二位上
console.log(a.indexOf(2,3));//7 从第四位开始查找2,在第八位上
console.log(a.lastIndexOf(2));//7 从后面开始查找,在第八位上
console.log(a.lastIndexOf(2,3));//1 同上
console.log(a.lastIndexOf(9));//-1 没找到返回负1
console.log(a.lastIndexOf("2"));//-1 使用严格等于方式 相当于 ===
IE8及以下并不支持indexOf,可以通过如下的方式来使它支持
if (!Array.prototype.indexOf){ //如果没有这个方法就添加比较的方法
Array.prototype.indexOf = function(elt /*, from*/){
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
- 迭代器 IE9及以上浏览器
- every 数组中所有的值都满足条件返回true
a=[1,2,3,4,5];
aa=a.every(function(item,index,array){
console.log(item);//每一项的值
console.log(index);//每项的索引
console.log(array);//数组本身
return item>=1;//全部大于等于1 返回true
})
console.log(aa);//true
aa=a.every(function(item,index,array){
console.log(item);//每一项的值
console.log(index);//每项的索引
console.log(array);//数组本身
return item>2;//第一项就不大于2,只执行一遍就结束了
})
console.log(aa);//false
- some 数组中有一个条件满足就返回true
a=[1,2,3,4,5];
aa=a.some(function(item,index,array){
return item>4;//有一个满足 返回true
})
console.log(aa);//true
aa=a.every(function(item,index,array){
return item>6;//没有满足项
})
console.log(aa);//false
- filter 过滤掉不符合条件的数据项
a=[1,2,3,4,5];
aa=a.filter(function(item,index,array){
return item>3;//过滤掉不符合条件的数据项
})
console.log(aa);//[4,5]
- map 对每一个数据项操作,并返回来
a=[1,2,3,4,5];
aa=a.map(function(item,index,array){
return item*3;
})
console.log(aa);//[3,6,9,12,15]
aa=a.map(function(item,index,array){
return item>3;
})
console.log(aa);//[false,false,false,true,true]
- forEach循环每一项的值,无返回值,类似for方法
a=[1,2,3,4,5];
a.forEach(function(item,index,array){
console.log(item);
console.log(index);
console.log(array);
})
- reduce循环合并方法
a=[1,2,3,4,5];
aa=a.reduce(function(pre,cur,index,array){
console.log(pre+" "+cur+" "+index);pre是每次return返回的值或初始值,cur为第二个值和之后每一项的值
return pre+cur;
})
console.log(aa);//15相当于把每项都加在了一起
//还有个reduceRight方法,就是从后往前处理
网友评论