文章目录
- 1.特点
- 2.创建数组
- 1.数组字面量
- 2.构造函数
- 创建类数组对象:
- toString():
- join(\”-\”):
- 栈方法:
- pop():只可以删最后一个
- push():在最后添加一个元素
- shift():
- unshift():
- reverse():
- sort():
- 1. 排序
- 2.回调函数
- concat():
- slice():
- splice:
- indexOf(key,index):
- lastIndexOf():
- every():
- some():
- map():通过对每个数组元素执行函数来创建新数组。
- filter():
- forEach():
- reduce():
- 回调函数参数:
1.特点
数组的长度可以动态修改(length )数组中的元素可以使用任意数据类型length可以返回当前数组长度,也可以设置数组长度
2.创建数组
1.数组字面量
var arr=[null,undefined,true,0,function(){},{}];var arr=[]//创建空数组
2.构造函数
1.var arr=new Array();//调用array构造函数 空数组2.var arr=new Array(10);//数组长度为10创建一个数组,并且数组长度为103.var arr=new Array(\"hello\",20,true);//数组元素为hello 20 ture创建一个以参数为数组项的数组
3.访问数组元素
数组下标:从0开始[1,2,3,4]{0:1,1:2,2:3}arr[3]://访问arr数组中的第4个数据arr.length=10;将数组长度设置为10,如果原数组长度小于10,相当于将原数组的长度扩展到10的长度;如果原数组的数组长度大于10,相当于删除数组元素,直到数组长度为10arr[10]=\'hello\';将原数组的长度扩展到11 然后将第十一个赋值hello
例子var arr=new Array();arr[10]=\"hello\"; //把第十一个数设置为helloconsole.log(arr);//(11) [empty × 10, \"hello\"]var arr1=new Array(10);var arr2=new Array(\"hello\");var arr3=new Array(null,10,true);console.log(arr3.length);//3console.log(arr.length=5);5arr3.length=2;//把arr3长度设置为2console.log(\"arr3:\",arr3);//2console.log(arr);//(5) [empty × 5]console.log(typeof arr);//objectconsole.log(arr1);//(10) [empty × 10]console.log(arr2);//helloconsole.log(arr3); //(2) [null, 10]
4.检测数组
Array.isArray():返回当前参数是否为array类型es6:Array.from():将类数组转换为数组
创建类数组对象:
1.包含length属性2.属性名必须为number类型或者字符串number0:\"0\"Array.of(10,\"hello\") 创建数组 [10, \"hello\"]
例子var arr=[];var o={}var a=\"hello\";console.log(typeof arr);//objectconsole.log(typeof o);//objectconsole.log(typeof a);//stringconsole.log(Array.isArray(arr));//ture arr是不是数组类型console.log(Array.isArray(o));//falseconsole.log(Array.isArray(a));//falseconsole.log(Array.of(10));//[10] 设置长度为一 第一个数为十的数组console.log(Array.of(10,null,false));//(3) [10, null, false]function say(){console.log(arguments);//Arguments(2) [false, 20, callee: ƒ, Symbol(Symbol.iterator): ƒ]var result=Array.from(arguments);//将类数组对象转化为数组console.log(result);//(2) [false, 20]console.log(Array.isArray(result));//true}say(false,20);var obj={\"0\":10,\"1\":null,\"2\":false,\"length\":3}var result=Array.from(obj);//将类数组对象转化为数组console.log(result); //(3) [10, null, false]console.log(Array.isArray(result));//turefunction say(){console.log(arguments);//Arguments [callee: ƒ, Symbol(Symbol.iterator): ƒ]var result=Array.from(arguments);console.log(result);//[]console.log(Array.isArray(result));//ture}say()instanceofconsole.log(arr instanceof Object)//ture
5.将数组转换为字符串
toString():
arr->Array.prototype:toString(){}var arr=[];arr.toString();
join(\”-\”):
将数组元素使用分隔符进行连接之后转换为字符串
例子var arr=[4,5,6,7];console.log(arr.join(\"-\"));//4-5-6-7 转换为字符串类型console.log(typeof(arr.join(\"-\")));//stringvar result=arr.toString();//转换为字符串console.log(result);//4,5,6,7console.log(typeof result);//string
6.队栈方法
删除或者添加数组元素
栈方法:
pop():只可以删最后一个
参数:无返回值:删除的元素
push():在最后添加一个元素
参数:想要添加的元素返回值:新数组的长度
例子var arr=[1,2,3,\"hello\",null];console.log(arr);//(5) [1, 2, 3, \"hello\", null]var result=arr.pop();//删除最后一个数组// var result=arr.push({},false);console.log(result);//返回值为删除的元素console.log(arr);//(4) [1, 2, 3, \"hello\"] 现在已经删除最后一个数了
队列方法:
shift():
参数:无返回值:删除的元素 删除第一个元素
unshift():
参数:添加的数组元素返回值:新数组长度
例子var arr=[null,false,10];console.log(arr);//(3) [null, false, 10]// var result=arr.unshift(\"hello\",true);//在前面添加\'hello,ture\'var result=arr.shift();console.log(result); //nullconsole.log(arr);//(2) [false, 10]
7.排序方法
reverse():
反转参数:无返回值:反转之后的数组在原数组的基础上进行反转
例子var arr=[1,2,3,4];console.log(arr);//(4) [1, 2, 3, 4]var result=arr.reverse();//将arr 反转console.log(result);//(4) [4, 3, 2, 1]console.log(arr==result);//ture
sort():
1. 排序
参数:(修改原数组)1.无默认调用每一个数组元素的tostring()进行比较
2.回调函数
function(a,b){if(a>b){return 1;//a排在b之后}else if(a<b){return -1;//a排在b前面}else{return 0;//不排序}}例子var arr=[1,3,2,11,23,32];console.log(arr);//(6) [1, 3, 2, 11, 23, 32]var result=arr.sort(function(a,b){// console.log(a);// console.log(b);if(a>b){return -1}else if(a<b){return 1}else{return 0}});console.log(result);//(6) [32, 23, 11, 3, 2, 1]例子:var arr=[{name:\'b\',age:20,sarlary:1000},{name:\'a\',age:26,sarlary:1500},{name:\'f\',age:12,sarlary:800},{name:\'c\',age:30,sarlary:5000}];var result=arr.sort(handler(\"sarlary\"));function handler(key){//key=agereturn function(a,b){var c=a[key];var d=b[key];if(c>d){return 1}else{return -1}}}//console.log(arr);console.log(result);灵活排序:function sum(key){}
8 操作方法(非静态方法)
concat():
数组拼接任意想要拼接的内容当作参数给concat拼接结果为新数组`
例子var arr=[1,2,3];var arr1=[4,5,6];var arr2=[\"hello\",null,true];var result=arr.concat([arr1]);//在arr后面加//[arr1](4) [1, 2, 3, Array(3)]console.log(result);console.log(arr1==result);console.log(arr==result);var result=arr.concat(\"hello\",false);//在arr 后面加 “hello”,false
slice():
数组切割不改变原数组参数:0: 返回值为一个没有切割的新数组1: index从当前位置开始切割,到数组末尾结束2:begin end从begin开始切割,到end结束,不包含结束位置-1代表数组中的最后一个元素
例子var arr=[1,2,3,4,5,6,7,8,9];var result=arr.slice(2,-1);//从第二个数后 到最后一个数console.log(result);//[3 4 5 6 7 8 9]console.log(arr==result);//false
splice:
返回值原数组数组切割修改原数组参数:0:返回一个空数组1:index从当前位置切割到数组末尾2:begin num从begin开始切割,切割num个3:begin num 插入的元素num=0: 插入num不等于0: 替换
例子var arr=[1,2,3,4,5,6,7,8,9];var result=arr.splice(2,3,\"hello\",false,10);//在2到3间加hello false 10// var result=arr.splice(1,3);//从标号为1的开始切3个console.log(arr);//[1, 5, 6, 7, 8, 9]console.log(result);// [2, 3, 4]console.log(arr==result);//false
indexOf(key,index):
查找数组元素使用全等操作符进行比较返回值:找到了返回下标(从前向后查找一个)找不到返回-1
lastIndexOf():
查找数组元素从后向前查找`
例子var arr=[1,2,true,\"hello\",21,2,1,2];//var result=arr.indexOf(2,2);var result=arr.lastIndexOf(2);console.log(result);//7
9迭代方法(非静态方法)
every():
当数组中的每一个数组项满足条件时,返回true
例子//这个例子检查所有数组值是否大于 18:var numbers = [45, 4, 9, 16, 25];var allOver18 = numbers.every(myFunction);function myFunction(value, index, array) {return value > 18;}
some():
只要有一个数组项满足条件,返回true例子 //这个例子检查某些数组值是否大于 18:var numbers = [45, 4, 9, 16, 25];var someOver18 = numbers.some(myFunction);function myFunction(value, index, array) {return value > 18;
}
map():通过对每个数组元素执行函数来创建新数组。
对每一个数组元素进行操作map() 方法通过对每个数组元素执行函数来创建新数组。map() 方法不会对没有值的数组元素执行函数。map() 方法不会更改原始数组例子将每个数*2var numbers1 = [45, 4, 9, 16, 25];var numbers2 = numbers1.map(myFunction);function myFunction(value, index, array) {return value * 2; //90,8,18,32,50}
filter():
过滤将满足条件的数组元素组成了一个新数组返回,原数组不变例子 //这个例子用值大于 18 的元素创建一个新数组:
var numbers = [45, 4, 9, 16, 25];var over18 = numbers.filter(myFunction);function myFunction(value, index, array) {return value > 18; //45 25}
forEach():
方法为每个数组元素调用一次函数(回调函数)。for(){}升级版没有返回值
例子 //每个数都使用回调函数var txt = \"\";var numbers = [45, 4, 9, 16, 25];numbers.forEach(myFunction);function myFunction(value, index, array) {txt = txt + value + \"<br>\"; //45br4br9br16br25br}
参数:回调函数 this回调函数参数:item index arr数组项 当前数组项下标 当前数组
reduce():
回调函数 this
回调函数参数:
pre item index arr上一次当this不存在时,pre第一次为第一个item,从第二次开始为undefined当this值存在时,第一次pre为this,从第二次开始,为上一次回调函数的返回值reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。reduce() 方法在数组中从左到右工作。另请参见 reduceRight()。reduce() 方法不会减少原始数组。
例子// 这个例子确定数组中所有数字的总和:var numbers1 = [45, 4, 9, 16, 25];var sum = numbers1.reduce(myFunction);function myFunction(total, value, index, array) {return total + value;}//总和是:99