JS模块(三 数组)
数组的定义
- 简单的理解数组 我们将其当做一个用来装很多数据的袋子 当我们需要使用时 将数据从袋子里拿出来
JS数组定义的几种方式
-
var arr=new Array();//给数组中的元素赋值。 arr[0]=100; arr[1]=200; arr[2]=200; arr[3]=300;
定义一个没有长度的空数组 没有元素 元素手动创建赋值
-
var arr2=new Array(3);// 创建对象时可以指定数组的长度 arr2[0]=10; arr2[1]=20; arr2[2]=30; arr2[3]=40;
定义一个有长度的空数组 没有元素 元素手动创建赋值
-
var arr3=new Array(200,300,500,1,300,500);
定义一个有长度 有元素的数组
-
var arr4=[20,30,20,5,3,6];
常用的简便定义数组的方法
-
二维数组
-
var arr=new Array(); var oneArr=new Array(10,20,30); var twoArr=new Array(40,50,60); arr[0]=oneArr; arr[1]=twoArr;
定义一个数组arr 和两个存放元素的数组
将oneArr赋给arr的第一个数组元素
将twoArr赋给arr的第二个数组元素
-
var arr2=[[10,20,30],[40,50,60],[400,500,600]];
直接进行嵌套定义
数组的一些特点
- JS中数组长度可以进行改变
- 数组可以存储多种类型
var arr=[100,3.14,false,"abc",new Object()]; var v=arr[arr.length-1];
遍历数组
- 一维数组
//数组的遍历 var arr=[20,30,50,30,600,200,100]; for(var i=0;i<arr.length;i++){ document.write(arr[i]); document.write("<br>");} //反向遍历 for(var i=arr.length-1;i>=0;i--){ document.write(arr[i]); document.write("<br>");}
for循环来进行数组的遍历
- 二维数组
var arr2=[[10,20,30],[40,50,60],[400,500,600]]; //遍历二维数组 for(var i=0;i<arr2.length;i++){ for(var j=0;j<arr2[i].length;j++){ alert(arr2[i][j]);}}
嵌套for循环来进行数组的遍历
![运行结果 -
数组的方法
-
合并数组:将多个数组的元素统一放到一个数组当中
var arr3=arr.concat(arr2);
将arr与arr2的元素放到arr3中
2. 将数组元素拼接成一个整体的字符串
var str=arr.join("");
字符串str用来接收arr的数组元素
3. 往数组中添加元素
arr.push(10);arr.push(20);arr.push(30);
-
删除并返回数组的第一个元素
var num2=arr.shift();
-
删除数组中的最后一个元素,返回的就是那个被删除的元素
var num=arr.pop();
-
向数组的开头添加一个或更多元素,并返回新的长度。
arr.unshift(40);
-
反转数组中的元素
arr.reverse();//
-
把数组中的元素,按照从小到大排列
var arr = [20, 50, 1, 20, 36, 90, 10, 1, 5]; var bjq = function(a, b) { return a-b;} arr.sort(bjq);
- 按照元素的大小来排列,需要传入比较器
- 空参的排序方式是按照字典顺序来排序的
-
根据起始索引和结束索引,来截取数组中的一段元素,放到一个新的数组中
var newArr = arr.slice(0, 4);
-
删除元素,并向数组添加新元素
//从1索引处开始,删除3个元素。 arr2.splice(1,3); //从1索引处,替换两个元素,替换为500 //arr3.splice(1,2,500);
- index 必需。规定从何处添加/删除元素
- 该参数是开始插入和(或)删除的数组元素的下标,必须是数字
- howmany 必需。规定应该删除多少元素。必须是数字,但可以是 “0”
- 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素
- element1 可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入
- elementX 可选。可向数组添加若干元素
ES6中关于数组的方法
-
every() 检测数值元素的每个元素是否都符合条件
var arr = [32, 33, 16, 40]; //判断数组中的元素不是是都大于30; var isOk = function(ele) { return ele > 10;} var flag = arr.every(isOk); alert(flag); //匿名函数,通常作为参数传递 arr.every(function(ele) { return ele > 10;})
-
filter() 检测数值元素,并返回符合条件所有元素的数组
-
var arr=["王五","王老虎","王百万","赵六","李四","张三"]; var newArr=arr.filter(function(ele){ if(ele.startsWith("王")){ return true;else{ return false; //返回true符合条件,就过滤到新数组中,false不符合条件,不会过滤到新数组中。}}); alert(newArr);
-
forEach() 数组每个元素都执行一次回调函数
var arr=[20,30,50,60,90]; arr.forEach(function(ele,index){ alert(ele);});
-
includes() 判断一个数组是否包含一个指定的值
var v=arr.includes(500); alert(v);
-
reduce()
var arr=[10,20,30,60,30,50];
var sum=arr.reduce(function(total,currentValue){
return total+currentValue;},0); //0是个初始值 可选
alert(sum);- total 必需 初始值, 或者计算结束后的返回值
- currentValue 必需 当前元素
- currentIndex 可选 当前元素的索引
- arr 可选 当前元素所属的数组对象
JS待续…