06 javascript引用类型--数组类型
1.定义数组
- 第一种方式
var arr=new Array();
- 第二种方式
var arr1=[1,2,3,'ljj',true,new Date()];
- 注意点:
var arr1=[1,2,3,'ljj',true,new Date()]; console.log(arr1.length);//6 arr1.length=5; console.log(arr1);//[ 1, 2, 3, 'ljj', true ]这个地方再执行的时候隐式的调用toString()方法
2.数组方法
- push
//push:往数组末尾添加数组元素 var arr=[1,2]; arr.push(3,4); console.log(arr);//[ 1, 2, 3, 4 ] var result=arr.push(5); console.log(result);//5 返回的是数组的长度
- pop
//pop从数组末尾删除元素 var arr=[1,2,3,4]; var result=arr.pop(); console.log(arr);//[ 1, 2, 3 ] console.log(result);//4 返回值是删除的元素
- unshift
//unshift向数组头部添加元素 var arr=[1,2,3,4]; var result=arr.unshift(10); console.log(arr);//[ 10, 1, 2, 3, 4 ] console.log(result);//5 返回数组长度
- shift
//shift向数组头部删除一个元素 var arr=[1,2,3,4]; var result=arr.shift(); console.log(arr);//[ 2, 3, 4 ] console.log(result);//1 返回删除的元素
- splice
//第一个参数:起始位置 //第二个参数:截取个数 //从第三个参数开始,表示追加的新元素 //操作数组本身 var arr=[1,2,3,4,5]; arr.splice(1,2,3,4,5); console.log(arr);//[ 1, 3, 4, 5, 4, 5 ]
- slice
//slice 截取范围 (左闭右开区间),返回截取的内容 //不操作数组本身 var arr=[1,2,3,4,5]; var brr=arr.slice(2,4); console.log(arr);//[ 1, 2, 3, 4, 5 ]
- concat
//concat 将数组合并粘连 //不操作数组本身 var arr=[1,2]; var brr=[4,5]; var crr=arr.concat(brr); console.log(arr);//[ 1, 2 ] console.log(crr);//[ 1, 2, 4, 5 ]
- join
//join 在数组每个元素之间加入内容 //不操作数组本身 var arr=[1,2]; var result=arr.join('-'); console.log(arr);//[ 1, 2 ] console.log(result);//1-2
- sort
//按照首位数数字排序 var arr=[1,2,5,6,3,7]; var brr=[55,77,3,7,10]; arr.sort(); brr.sort(); console.log(arr);//[ 1, 2, 3, 5, 6, 7 ] console.log(brr);//[ 10, 3, 55, 7, 77 ]
- reverse
//按位置倒叙,不是大小!!!! var arr=[1,2,5,6,3,7]; var brr=[55,77,3,7,10]; arr.reverse(); brr.reverse(); console.log(arr);//[ 7, 3, 6, 5, 2, 1 ] console.log(brr);//[ 10, 7, 3, 77, 55 ]
- 多位数字正确排序
var brr=[55,77,3,7,10]; function compare(val1,val2){ if(val1<val2){ return -1; }else if(val1>val2){ return 1; }else{ return 0; } } brr.sort(compare); console.log(brr);//[ 3, 7, 10, 55, 77 ]
3.更多方法
- indexOf
//只有一个参数的时候表示此元素在数组中的位置 var arr=[1,2,3,4,5,6,7,8,4]; var index=arr.indexOf(4); console.log(index);//3
//两个参数的时候,第一个参数表示值,第二个参数表示查找的起始位置 var arr=[1,2,3,4,5,6,7,8,4]; var index=arr.indexOf(4,5); console.log(index);//8
- lastIndexOf
//只有一个参数的时候表示此元素在数组中的位置,倒叙查找 var arr=[1,2,3,4,5,6,7,8,4]; var index=arr.lastIndexOf(4); console.log(index);//8
//两个参数的时候,第一个参数表示值,第二个参数表示查找的起始位置,倒叙查找 var arr=[1,2,3,4,5,6,7,8,4]; var index=arr.indexOf(4,0); console.log(index);//3
- every
//对于数组每一个元素都进行遍历进行一个函数的运行,如果都返回true,返回true //有一项为false,返回false var arr=[1,2,3,4,5,6,7,8,4]; var result=arr.every(function (item,index,arr) { return item>2; }) console.log(result);//false
- filter
//对于数组每一个元素按照条件过滤 var arr=[1,2,3,4,5,6,7,8,4]; var result=arr.filter(function (item,index,arr) { return item>5; }) console.log(result);//[ 6, 7, 8 ]
- forEach
//循环数组的每一项的值,并执行一个方法 var arr=[1,2,3,4,5,6,7,8,4]; var brr=[]; var result=arr.filter(function (item,index,arr) { brr.push(item*2); }) console.log(brr);//[ 2, 4, 6, 8, 10, 12, 14, 16, 8 ]
- some
//对于数组每一个元素都进行遍历进行一个函数的运行,如果都返回false,返回false //有一项为true,返回true var arr=[1,2,3,4,5,6,7,8,4]; var result=arr.some(function (item,index,arr) { return item>2; }) console.log(result);//true
- map
//对于数组中的每一个元素进行一个函数的运行,函数执行完毕之后,将新的结果返回 var arr=[1,2,3,4,5,6,7,8,4]; var result=arr.map(function (item,index,arr) { return item*2; }) console.log(result);//[ 2, 4, 6, 8, 10, 12, 14, 16, 8 ]
- reduce
//第一个参数:前一个值 //第二个参数:当前值 //第三个参数:索引 //第四个参数:数组本身 var arr=[1,2,3,4]; var result=arr.reduce(function (pre,cur,index,arr) { return pre+cur; }) console.log(result);//10
- reduceRight
//和reduce差不多,只是是从右边开始运算的 var arr=[1,2,3,4]; var result=arr.reduceRight(function (pre,cur,index,arr) { return pre+cur; }) console.log(result);//10