JS数据结构——Array数组
数组Array
创建:
1.使用方括号[ ]进行创建和初始化
var arr=[] //创建一个空数组 var arr=[1,2,3] //创建一个包含数字的数组
2.使用Array构造函数
var arr=new Array() //创建空数组 var arr=new Array(1,2,3) //创建包含数字的数组 var arr=new Array(10) //创建长度为10的数组
3.判断是否为数组Array.isArray(arr)
var arr=[1,2,3]; Array.isArray(arr) //true
存取函数
不会产生新数组:
1.查找元素indexOf()、lastIndexOf()
var arr=[1,2,3,4,1]; arr.indexOf(1) //0 arr.lastIndexOf(1) //4
2.数组转字符串join()、toString()
var arr=["a ","b","c"] arr.join(); //a,b,c arr.toString() //a,b,c
不带逗号的连接:join("")
var arr=['a','b','c']; arr.join("") //abc
会产生新数组
1.连接arr1.concat(arr2)
var arr1=[1,2,3]; var arr2=[4,5,6]; arr1.concat(arr2); //[1,2,3,4,5,6] arr2.concat(arr1); //[4,5,6,1,2,3]
2.截取splice(index,length)
var arr=[1,2,3,4,5,6]; var part=arr.splice(3,3); //[4,5,6]
可变函数
1.添加元素push()、unshift()
var arr=[1,2,3]; arr.push(4); //[1,2,3,4] arr.push(['a','b','c']) //[1,2,3,4,['a','b','c']]
arr.unshift(0); //[0,1,2,3]
arr.unshift(['a','b','c']) //[['a','b','c'],1,2,3]
2.删除元素pop()、shift()
var arr=[1,2,3]; var back=arr.pop(); //3 var pre=arr.shift(); //1
3.替换元素splice(index,length,new_arr)
var arr=[1,2,3]; var arr1=arr.splice(0,1,'a'); //['a',2,3],arr1=[1]
4.反序reverse()
var arr=[1,2,3]; arr.reverse(); //[3,2,1]
5.排序sort(),按字典顺序对元素进行排序
var arr=[3,2,4,8,1]; arr.sort(); //[1, 2, 3, 4, 8]
默认按照从大到小的顺序进行排列,可添加排列函数
function cmp(a,b){ return b-a; } var arr=[3,2,4,8,1]; arr.sort(cmp); //[[8, 4, 3, 2, 1]]
迭代器方法
不产生新数组
1.forEach(fn)对数组的每个元素执行fn
var arr=[1,2,3]; arr.forEach(function(i){console.log(i*i)}); //1 4 9
2.every(fn),数组的每个元素均使得fn返回true,则every返回true
var arr=[2,4,6,8]; arr.every(function(i){return i%2==0;}) //true
3.some(fn),数组中存在元素使得fn返回true
var arr=[1,2,3,5]; arr.some(function(i){return i%2==0;}) //true
4.reduce(fn),对数组中的元素进行累计fn运算
var arr=[1,2,3]; var sum=arr.reduce(function(res,cur){return res+=cur;},0) //6,对数组元素求和 var s=['a','b','c']; var str=s.reduce(function(res,cur){return res+=cur;},'') //abc,连接字符串
5.reduceRight(fn),反向数组累计fn运算
var s=['a','b','c']; var str=s.reduceRight(function(res,cur){return res+=cur;},'') //cba,反向连接字符串
生成新数组
1.arr.map(fn),对数组元素执行fn,并返回结果数组
var arr=[1,2,3]; var new_arr=arr.map(function(i){return i*i}) //[1,4,9]
2.arr.filter(fn),数组过滤,返回包含使得fn为true的元素的数组
var arr=[1,2,3,4,5,6]; var new_arr=arr.filter(function(i){return i%2==0;}) //[2,4,6]