JavaScript描述---一维数组

使用数组

创建数组

  1. 通过new创建数组
    var arr=new Array(100,true,"hello");//数组中的元素不必是同一类型
    
  2. 省略new运算符创建数组
    var arr= Array(100,true,"hello");
    

【注】上述两种方法,传入参数只有一个并且是数字时,直接声明这么长的一个数组.

var arr= Array(10);//声明长度为10的数组,该数组有10个内存空间
  1. 数组常量进行赋值(一般使用[])
    var arr= [100,true,"hello"];
    var arr= [10];//arr中只有一个元素,值为10
    

访问数组元素

访问数组的元素: 数组[下标],下标从0开始

var arr= [100,true,"hello"];
	for(var i=0;i<arr.length;i++){
	document.write(arr[i] + "<br/>");
}

数组方法

查找元素

indexOf(): 查找传进来的参数在目标数组中是否存在。如果目标数组包含该参数,就返回该元素在数组中的索引;如果不包含,就返回-1。

var arr=[10,20,30,40,50,20,60];
var index=arr.index[20];
alert(index);//1
var index=arr.index[20,2];//第一个参数表示要查找的元素,第二个参数表示查找的起始位置
alert(index);//5

【注】如果数组中包含多个相同的元素,indexof()函数总是返回第一个与参数相同的元素的下标。

将数组转为字符串

  1. join()
    var arr=[10,20,30];
    var res=arr.join("===xxx");
    alert(arr);//10,20,30
    alert(res);//10===xxx20===xxx30
    
  2. toString()
    var name=["Alice","Bob","Mike"];
    var nameStr=name.toString();
    alert(nameStr);//Alice,Bob,Mike
    

【注】两种方法都返回一个包含数组所有元素的字符串,各元素之间用逗号隔开。

在已有数组的基础上生成新数组

  1. concat() :合并多个数组创建一个新数组
    var arr1=[10,20,30];
    var arr2=[50,60,70];
    var newArr=arr1.concat(arr2,"hello",true);
    alert(newArr);//10,20,30,50,60,70,hello,true
    alert(newArr.length);//8
    alert(arr1);//10,20,30
    
  2. splice() :截取一个数组的自己创建一个新数组
    //增加
    	var arr=[10,20,30,40,50,60];
    	var res=arr.splice(2,0,"hello",true);
    	alert(arr);//10,20,hello,true,30,40,50,60
    	alert(res);//0
    //删除
    	var arr=[10,20,30,40,50,60];
    	var res=arr.splice(2,2);//第一个参数师姐去的起始索引,第二个参数是截取的长度
    	alert(arr);//10,20,50,60
    	alert(res);//30,40
    //修改(先删除后增加)
    	var arr=[10,20,30,40,50,60];
    	var res=arr.splice(2,2,70,80);
    	alert(arr);//10,20,70,80,50,60
    	alert(res);//30,40
    

添加元素

  1. push() :将一个元素添加到数组末尾,返回新数组的长度
    var arr=["北京","上海","广州"];
    var res=arr.push("深圳","天津","成都");
    alert(arr);//北京,上海,广州,深圳,天津,成都
    alert(res);//6
    
  2. unshift() :将一个元素添加到数组开头,返回新数组的长度
    var arr=["唐朝","元朝","明朝"]var res=arr.unshift("隋朝","商汤");
    alert(arr);//隋朝,商汤,唐朝,元朝,明朝
    alert(res);//5
    

删除元素

  1. pop() :删除数组末尾的元素,返回删除的元素
    var arr=["北京","上海","广州"];
    var res=arr.pop();
    alert(res);//广州
    alert(arr);//北京,上海
    
  2. shift() :删除数组开头的元素,返回删除的元素
    var arr=["唐朝","元朝","明朝"]var res=arr.shift();
    alert(res);//唐朝
    alert(arr);//元朝,明朝
    

元素排序

  1. reverse():将数组中元素的顺序进行翻转
    var arr=[10,20,30];
    alert(arr.reverse());//30,20,10
    
  2. sort():对数组中的元素进行大小排序
    //数值从小到大排序
    	var arr=[10,20,5];
    	arr.sort(function(value1,value2)){
    		return value1-value2;
    	}
    	alert(arr);//5,10,20
    //数值从大到小排序
    	var arr=[10,20,5];
    	arr.sort(function(value1,value2)){
    		return value2-value1;
    	}
    	alert(arr);//20,10,5
    

迭代器方法

对数组中的每一个元素应用一个函数,可以返回一个值、一组值或者一个新数组。

不生成新数组的迭代器方法

  1. forEach():接受一个函数作为参数,对数组中的每个元素使用该函数
    var arr=[10,20,30,40,50,60];
    arr.forEach(function(item,index,arr){ 
    //item当前遍历到的元素
    //index当前遍历到的元素下标
    //arr数组本身
    document.write(item+","+index+"<br/>");
    });	
    运行结果:
    10,0
    20,1
    30,2
    40,3
    50,4
    60,5
    
  2. every():接受一个返回值为布尔类型的函数,对数组中的每个元素使用该函数。如果对于所有的元素,该函数均返回true,则该方法返回true。
    var arr=[10,20,30,40,50,60];
    var res=arr.every(function(item,index,arr){
    //过滤条件
    	return item > 20;
    });
    alert(res);//false
    alert(arr);//10,20,30,40,50,60
    
  3. some():接受一个返回值为布尔类型的函数,对数组中的每个元素使用该函数。只要有一个元素使得该函数返回true,则该方法返回true。
    var arr=[10,20,30,40,50,60];
    var res=arr.some(function(item,index,arr){
    //过滤条件
    	return item > 20;
    });
    alert(res);//true
    alert(arr);//10,20,30,40,50,60
    
  4. reduce():接受一个函数,返回一个累加值。
    var arr=[10,20,30,40,50,60];
    var res=arr.reduce(function(prev,next,index,arr){
    //prev  第一次是下标为0的元素,第二次开始 上一次遍历return的值
    //next  从下标1开始,当前遍历到的元素
    //arr   数组本身
    	alert(prev+","+next);//10,20;30,30;60,40;100,50;150,60;210
    	return prev+next;
    });
    alert(res);
    

生成新数组的迭代器方法

  1. map():映射,将计算后的数据存在与原数组下标相同的新数组中
    var arr=[10,20,30,40,50,60];
    var newArr=arr.map(function(item){
    	//映射关系
    	return item * 1.3;
    });
    alert(newArr);//13,26,39,52,65,78
    alert(arr);//10,20,30,40,50,60
    
  2. filter()
    var arr=[10,20,30,40,50,60];
    var newArr=arr.filter(function(item,index,arr){
    	//过滤条件
    	return item > 20;
    });
    alert(newArr);//30,40,50,60
    alert(arr);//10,20,30,40,50,60
    

深拷贝和浅拷贝

//浅拷贝:把一个数组赋给另一个数组时,修改原数组的值,新数组的值也会发生变化。
	var nums=[1,2,3];
	var sameNums=nums;//
	nums[0]=100;
	console.log(nums);//100,2,3
	console.log(sameNums);//100,2,3
//深拷贝:将原数组中的每一个元素都复制一份到新数组中
	var nums=[1,2,3];
	var sameNums=[];
	for(var i in nums){
		sameNums[i]=nums[i];
	}
	nums[0]=100;
	console.log(nums);//100,2,3
	console.log(sameNums);//1,2,3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值