数组:
在javascript中数组也是一种对象。
特点:
“数组”即一组数据的集合。
js数组更加类似于java的容器。长度可变,元素类型也可以不同!
数组长度随时可以变,随时可以被修改
常用方法:
push:在尾部插入元素(返回新数组元素的个数),pop(返回一处的元素)从尾部移除一个元素
shift:从头部以后粗一个元素(返回移除的元素),unshift:在头部插入元素(返回元素的个数)
splice:第一个参数表示起始位置,第二个参数表示截取的个数,第三个参数表示参数以后追加的新元素个数(截取的方法),slice(a,b)(截取范围,左闭右开区间;返回截取的内容)
concat , join,sort(正序),reverse(倒序排序是按照元素位置倒着排的)
相关代码如下所示:
var arr1=[1,2,1,2,43,54,2,34];
var arr2=[3,34,23.5,23,54,65];
var pushArr=arr1.push(1,3,65,23);//在尾部插入元素
console.info("push数组为:"+arr1);
console.info("push新数组元素个数:"+pushArr);//返回新数组元素的个数
console.info("---------------------------------------------------");
var popArr=arr1.pop();//在尾部一处一个元素,返回一处的元素
console.info("pop()数组为:"+arr1);
console.info("pop()移除元素为:"+pushArr);
console.info("---------------------------------------------------");
var shiftArr=arr1.shift();//移除头部的一个元素,返回移除元素
console.info("shift()数组为:"+arr1);
console.info("shift()移除元素为:"+shiftArr);
console.info("---------------------------------------------------");
var unshiftArr=arr1.unshift(1,2,43,54);//在头部插入多个元素,返回移除后的数组个数
console.info("unshift()数组为:"+arr1);
console.info("unshift()新数组元素个数:"+unshiftArr);
console.info("---------------------------------------------------");
var spliceArr=arr1.splice(2,3,3,4);//第一个参数表示起始位置,第二个参数表示截取的个数,从第三个元素开始都是在该截取地方添加的新元素数(截取的方法)
console.info("splice()数组为:"+arr1);
console.info("splice()截取的元素:"+spliceArr);//返回截取的元素
console.info("---------------------------------------------------");
var sliceArr=arr2.slice(2,4);//截取范围,左闭右开区间;返回截取的内容,在这里截取第二个,第三个,不截取第四个
console.info("slice()数组为:"+arr2);//结果 3,34,23.5,23,54,65
console.info("slice()截取的元素:"+sliceArr);//返回截取的元素,结果:23.5,23
console.info("---------------------------------------------------");
var concatArr=arr1.concat(arr2);//合并粘连的操作,不操作数组本身
console.info("concat()合并粘连后的数组:"+concatArr);
console.info("---------------------------------------------------");
var joinArr=arr1.join("--");//不操作数组本身,在每个元素之间加入内容
console.info("join(),在每个元素之间加入内容后原数组:"+arr1);
console.info("join(),在每个元素之间加入内容后新数组:"+joinArr);
console.info("---------------------------------------------------");
var sortArr=arr1.sort();//操作数组本身,排序
console.info("sort()排序之后的结果:"+arr1);
console.info("sort()排序之后返回的的结果"+sortArr);
console.info("---------------------------------------------------");
var reverseArr=arr1.reverse();//倒叙排序是按照元素位置排序的,操作数组本身
console.info("reverse()倒叙排序后的结果为:"+arr1);
console.info("reverse()倒序排序之后返回的的结果"+reverseArr);
console.info("---------------------------------------------------");
function sortCompare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
var sortArr=arr1.sort(sortCompare);//操作数组本身,排序
console.info("sort(sortCompare)排序之后的结果:"+arr1);
console.info("sort(sortCompare)排序之后返回的的结果"+sortArr);
console.info("---------------------------------------------------");
function reverseCompare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
var reverseArr=arr1.reverse(reverseCompare);//倒叙排序是按照元素位置排序的,操作数组本身
console.info("reverse()倒叙排序后的结果为:"+arr1);
console.info("reverse()倒序排序之后返回的的结果"+reverseArr);
ECMAscript(javascript)数组中的新特性补充:
位置方法:indexof():从0往后查找, lastIndexof():从后往前查找;
迭代方法:
every:对数组的每个元素进行一个函数去运行,如果都返回的是true,则为true,如果有一为fasle,则返回fasle,
filter:filter对于数组的每一个元素进行一个函数的运行,给定函数去执行,把过滤后的结果返回
forEach:forEach循环遍历
some:some如果有一项返回true,则返回true,如果全部为fasle,则返回fasle
map:map对于数组的每一个元素进行一个函数运行, 可以经过函数执行完毕后把新的结果返回,结果将返回新数组
缩小方法:
reduce:
reduceRight:
代码如下:
var arr1=[32,12,554,21,23,54,23,65,23,65,12];
//一个参数的时候传值,返回该值在数组中的索引位置
//两个参数的时候,第二个参数表示的是起始位置,第一个参数查找该值的索引
var index=arr1.indexOf(12);//返回1 index从0往后后找的
var index1=arr1.indexOf(1,12);
console.info(index);//1
console.info(index1);
console.info("------------------------------------------------");
var lastindex=arr1.lastIndexOf(12);//从后往前查找
console.info(index);//1
console.info("----------五个叠加方法------------------------");
//every对数组的每个元素进行一个函数去运行,如果都返回的是true,则为true,如果有一为fasle,则返回fasle,
var resultEvery=arr1.every(function(item,index,array){
console.info("item: "+item+" inedx: "+index+" array: "+array);
return item>2;
});
console.info("every()遍历返回的结果:"+resultEvery);//true
console.info("------------------------------------------------");
//filter对于数组的每一个元素进行一个函数的运行,给定函数去执行,把过滤后的结果返回
var resultFilter=arr1.filter(function(item,index,array){
console.info("item: "+item+" inedx: "+index+" array: "+array);
return item>40;
});
console.info("every()遍历返回的结果:"+resultFilter);//554,54,65,65
console.info("------------------------------------------------");
//forEach循环遍历
var resultForEach=arr1.forEach(function(item,index,array){
console.info("item: "+item+" inedx: "+index+" array: "+array);
});
console.info("------------------------------------------------");
//map对于数组的每一个元素进行一个函数运行, 可以经过函数执行完毕后把新的结果返回,结果将返回新数组
var resultMap=arr1.map(function(item,index,array){
console.info("item: "+item+" inedx: "+index+" array: "+array);
return item*5;
});
console.info("经过map后返回的新数组:"+resultMap);
console.info("------------------------------------------------");
//some如果有一项返回true,则返回true,如果全部为fasle,则返回fasle
var resultSome=arr1.some(function(item,index,array){
return item>40;
});
console.info("some()遍历返回的结果:"+resultSome);//true
console.info("------------------reduce,reduceRight----------------------------");
//参数分别是:前一个值,当前值,索引,array
var resultReduce=arr1.reduce(function(pre,cur,index,array){//从左遍历
return pre+cur;
});
console.info("reduce()返回的结果"+resultReduce);//所有相加
//参数分别是:前一个值,当前值,索引,array
var resultReduce=arr1.reduceRight(function(pre,cur,index,array){//从右遍历
return pre+cur;
});
console.info("reduceRight()返回的结果"+resultReduce);//所有相加