js-数组方法详解

一、创建数组

1、字面量方式创建数组

var 变量名=[数值1,数值2];

var arr=[10,4,2,19,7,4];
2、构造函数创建数组

var 变量名=new Array();
新建一个长度为零的数组。

var myarr=new Array();
myarr[0]=10;
myarr[1]="hello";
myarr[3]=true;
console.log(myarr);//[10,"hello",true]

注意:括号里面可以有参数。

  1. 若为一个数字,表示该数组的长度。
    例如: var 变量名=new Array( n );
    新建一个长度为n的数组
var myarr=new Array(10);
console.log(myarr);[]
console.log(myarr.length); 10
  1. 如果为多个数字或者一个(多个)非数字表示的是传递数组中应该包含的值。
    例如: var 变量名=new Array( 元素1,元素2,元素3,…);
    新建一个指定长度的数组,并赋值
var myarr=new Array(10,"hello");
console.log(myarr);//[10,"hello"]
console.log(myarr.length);//2

二、访问数组

数组的长度

var arr=[12,22,13,23,45,17];
console.log(arr.length);//6

数组的索引号 0—arr.length-1
通过数组的索引号访问数组元素 arr[索引号]

console.log(arr[0])//12
console.log(arr[2])//13
console.log(arr[arr.length-1])//17

三、遍历数组

1、for循环遍历数组
var arr=[10,"hello",true,[10,"hello"]];
for(var i=0;i<arr.length;i++){
	console.log(arr[i]);// 10 "hello" true [10,"hello"]
 }
2、for…in 遍历数组
var arr=[10,4,2,19,7,4];
for(var i in arr){
	console.log(arr[i]);//10 4 2 19 7 4

除了上面两种遍历数组的方法外,我们还可以通过调用数组的方法forEach来遍历数组,为了避免混淆,我会在数组的方法中再具体说明。

四、数组的方法

1、数组方法-遍历

arrObj .forEach(function(参数1,参数2,参数3){ })

  • 参数1;每个元素
  • 参数2;索引号
  • 参数3;数组
  • 返回值:无返回值
var arr=["一等奖","二等奖","三等奖","四等奖","参与奖"];
arr.forEach(function(item,index,arr){
			console.log(item);//每个元素 一等奖 二等奖 三等奖 四等奖  参与奖
			console.log(index);//索引号 0  1  2  3  4
			console.log(arr);//数组 ["一等奖","二等奖","三等奖","四等奖","参与奖"]
			return item;
});
2、数组方法-映射

arrObj .map(function(参数1,参数2,参数3){ });

  • 参数1;每个元素
  • 参数2;索引号
  • 参数3;数组
  • 返回值:替换后的新数组
var arr=[100,50,50,50,10,30];
var a=arr.map(function(item,i,arr){
	if(item>=500){
		return "及格"
	}else{
		return "不及格"
	}
});
console.log(a);//["不及格","不及格","不及格","不及格","不及格","不及格"]
3、数组方法-筛选

arrObj .filter(function(参数1,参数2,参数3));

  • 参数1;每个元素
  • 参数2;索引号
  • 参数3;数组
  • 返回值:筛选后的数组
var arr=[12,13,14,15,16,17,18];
var a=arr.filter(function(item,i,arr){
			console.log(item);//12,13,14,15,16,17,18
			console.log(i);//0 1 2 3 4 5 6
			console.log(arr);//[12,13,14,15,16,17,18]
			if(item<14){
				return item;
			}
});
console.log(a);//12 13
4、数组方法- 迭代

arrObj .reduce(function(参数1,参数2,参数3,参数4));

  • 参数1:初始值
  • 参数2;当前数
  • 参数3;当前数下标
  • 参数4;数组
  • 常用于累加 累减
var arr=[12,13,14,15,16,17,18];
var a=arr.reduce(function(val,curNum,i,arr){
			console.log(val);//初始值 12
			console.log(curNum);//当前数 13 14 15...
			console.log(i);//当前数下标 1
			console.log(arr);//数组
			return val+curNum;//累加求和
});
console.log(a);//105  求和
5、数组方法-删除
  1. 从头部删除
    arrObj.shift();
    从数组头部删除元素
    返回值:删除的数
 var arrObj=[9,2,33,66,1];
 arrObj.shift(arrObj);//[2,33,66,1]
  1. 从尾部删除
    arrObj .pop();
    从数组尾部删除元素
    返回值:删除的数
var arrObj=[9,2,33,66,1];
 arrObj.pop(arrObj);//[9,2,33,66]
6、数组方法-添加
  1. 从头部添加元素
    arrObj.unshift(元素1,元素2…);
    从数组头部添加元素
    返回值,新数组的长度
var arrObj=[9,2,33,66,1];
arrObj.unshift(1);
console.log(arrObj)//[1,9,2,33,66,1]
  1. 从尾部添加元素
    arrObj.push(元素1,元素2…);
    数组尾部添加元素
    返回值,新数组的长度
var arrObj=[9,2,33,66,1];
arrObj.push(1);
console.log(arrObj)//[9,2,33,66,1,1]
7、数组方法-添加/删除

arrObj.splice(参数1,参数2,参数3)

  • 参数1:必须 开始删除/添加位置的下标.可以为负
  • 参数2:必须 删除的个数.
  • 参数3:可选 添加的元素,多个元素之间用逗号隔开,
  • 返回值:删除的元素构成的数组
var arr = [10,"hello",true,8,"world"];
var a = arr.splice(2,2);//[true,8]
var a1 = arr.splice(-2,2);//["hello","world"]
var a2 = arr.splice(0,2,44,88);//[10]
console.log(arr)//[44,88]
8、数组方法-排序

arrObj.sort(参数)

  • 参数 可选 函数若省略 按照unlcode编码排序 ,升序
var arr=[10,6,2,8];
//默认从大到小
var a=arr.sort(function(x,y){
	// return x-y;//升序
	return y-x;//降序
});
console.log(a); // [10,8,6,2]
9、数组方法-反转

arrObj.reverse(参数) 反转数组

  • 返回值:反转后的数组
var arr=[2,10,6,8];
console.log(arr.reverse());//反转数组[8,6,10,2]
10、数组方法-链接

arrObj.concat(参数…)

  • 参数1:必须 可以是数组,可以是元素
  • 多个参数之间用逗号隔开
  • 返回值:链接后的数组
var arr = [10,11];
var arr2 = ["hello","world"];
var a = arr.concat(true,10,arr2);
console.log(a);//[10,11,true,10, "hello", "world"]
11、数组方法-分割

arrObj.slice(参数1,参数2)

  • 参数1:必需 开始截取的位置,可以为负
  • 参数2:可选 结束截取的位置,可以为负
  • 返回值:截取的数组
  • 字符串对象也可以用
var str = "hello";
var s = str.slice(1,3);//el
var s1 = str.slice(-3,-1);//ll

今天的分享就到这里 希望对大家有所帮助!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值