js数组的一些用法-声明、添加、移除、遍历

数组作为js中比较常用的一个容器,简单记录一些常用的方法,作为查询工具使用;

1 声明,验证;

var array1=new Array();//比较标准的方式
var array2=[];//也可以随意一些,据说此种方式效率更高一些;推荐此种
var array3=[1,2,3,4];//直接初始化

//Array.isArray(判断对象是否是数组) 
Array.isArray(array3);//true

2 添加移除元素;

2.1 array.push(item...);array.unshift(item...);array.pop();array.shift();

		//push()pop()
        var array1=[];
		array1[0]=1;//直接赋值,且不用担心下标越界的问题
		array1.push(2);//直接在后面追加 
		array1.push(3);// array1[1,2,3]
		array1.pop();//末尾删除 类似堆栈(stack) array1[1,2]
		array1.push(3,4);//也可以同时多个 array1[1,2,3,4]
		array1.push([5,6,7,],8);//不限制类型 array1[1,2,3,4,[5,6,7],8]
        
        //unshift(),shift()
        var array2=[2,3,4];//
		array2.unshift(1);//头部添加 array2[1,2,3,4]
		array2.shift();//头部珊瑚  array2[2,3,4]
		

2.2 splice();从指定位置添加删除元素;

2.2.1 splice(startIndex,count,newItem);

startIndex:起始索引,数组添加删除元素的位置-即新元素的位置;

count:要删除的元素数量,如果是0,则不删除;

newItem:要添加的元素,如果不填写,则没有添加新元素;

 

		var arrayS=[1,2,3];
		//参数1 splice(index,0,newItem)-添加新元素
		arrayS.splice(2,0,'new1');//添加1个
		console.log(arrayS);//[1,2,'new1',3]
		arrayS.splice(3,0,'new2','new3');//添加多个
		console.log(arrayS);//[1,2,'new1','new2','new3',3]
		//参数2 splice(index,count)-删除元素
		arrayS.splice(2,3);
		console.log(arrayS);//[1,2,3]
		//参数2 splice(index,count,newItem)-移除元素并替换
		arrayS.splice(2,1,[3,4,5,6]);
		console.log(arrayS);//[1,2,[3,4,5,6]]

3 遍历迭代-forEach;for 循环;every();some();reduce();map();filter();

3.1 forEach

var array1=[10,20,30,40];
		//循环前一般需要做下判断
		if(array1&&array1.length){
			//TO-DO 
		}else{
			//数组不存在或者 为空的情况
		}
        
        //1 forEach
		array1.forEach(function(item,index){//forEach;比较少用
			console.log('forE:'+item);
		});
		array1.forEach((i,index)=>{//forEach + Lambda表达式
			console.log("forEach:"+i);
		});

3.2 for循环

//2 for循环
		for(var a in array1){// 不考虑顺序可以用;比较少用
			console.log('a:'+array1[a]);
		}
		for(var i=0;i<array1.length;i++){//普通for循环 排序时使用;一般的用法
			console.log('for:'+array1[i]);
		}
		for(var i=0,j=0;j=array1.length,i<j;i++){//数组比较大时的一点儿优化
			console.log('forj:'+array1[i]);
		}

3.3 every(),some()

//3.3 every() 与some()
        //3.3.1 every()该方法接受一个返回为布尔值的函数,若数组所有元素均返回true,则结果为true
        //3.3.2 some() 类似every(),只不过是只要 有一个元素返回true,则结果为true; 
        //some()与every()  类似于逻辑运算 or与and
        var array3=[1,2,3,4,5,6,7,8];
		var array4=[2,4,6,8];
		
        var isEven=function(num){//是否为偶数
			return num%2==0;
		}
		var even1=array3.every(isEven);
		var even2=array4.every(isEven);
		var even3=array3.some(isEven);
		var even4=array4.some(isEven);
		console.log(even1,even2,even3,even4);//false true true true

3.4 reduce(),reduceRight();

//4 reduce()方法接受一个函数 ,该函数依次作用于数组中的元素,最终返回一个值;
		//执行顺序大概是  
        //var result1= func(index1 index2);var result2= func(result,index3),依次类推;
		//使用场景:求累加值等
		var add=function(num1,num2){
			return num1+num2;
		}
		var array5=[1,2,3,4,5,6,7,8,9,10];
		var total=array5.reduce(add);
		console.log(total);//55
//4.1 reduceRight()方法,  reduce()的变种,原理就是 array.reverse()+reduce();执行顺序 由后往前;
		var contact=function(item1,item2){
			return item1+item2;
		}
		var array6=['how ','are ','you '];
		console.log(array6.reduceRight(contact));//you are how

3.5 map();与every()类似,方法接收一个函数,数组中所有元素依次执行,返回的新值会生成一个新的数组;


		var add5=function(item){
			return item+5;
		}
		var array7=[1,2,3,4,5];
		var newArray7=array7.map(add5);
		console.log(newArray7);//6,7,8,9,10
		console.log(array7);//1,2,3,4,5
		//注意如果数组内是个对象数组
		var array8=[{data:1},{data:2},{data:3},	{data:4},{data:5}]
		var array9=array8.map((item, idx) => {
			item.data=item.data+5//array8的内容会改变
			return item;
		});
		console.log(array8);//?
		console.log(array9);//?

3.6 filter(),过滤方法-接受一个函数,数组每个元素依次执行,满足条件的元素生成一个新的数组;

//基数
		var isOdd=function(num){
			return num%2!=0;
		}
		var array10=[1,2,3,4,5,6,7,8];
		var newArray10=array10.filter(isOdd);
		console.log(newArray10);//[1,3,5,7]

4 复制,检索array.slice(start,end);索引位置包含start,不包含end;

array.indexOf();

//slice方法针对array中的一段做浅复制
//第一个参数是起始位置,第二个可选,默认是数组的长度
//一般来说 截取后的值a + 截取后的数组值就是 截取前完整的数组的值
var array11=[1,2,3,4,5,6,7];
var array11Slice=array11.slice(1,3);
console.log(array11Slice);//[2,3]
console.log(array11);//[1,2,3,4,5,6,7]
//indexOf 判断数组是否包含某个元素,一般可以配合 splice方法删除元素
//当然返回的结果是第一个匹配成功的,若需要全部删除还需要另外考虑
var array4=[111,222,333];
var index = array4.indexOf(222);//index==1
if(index > -1) {
	array4.splice(index, 1);//array4-[111,333]
}

5 反转, array.reverse();

var array12=[1,2,3,4,5]
array12.reverse();
console.log(array12);//[5,4,3,2,1]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值