数组:存储一组数据
数组的创建:
- 通过构造函数创建:
var myarry = new Array() ;//创建一个空数组
注意:Array() 传参可以为多类型,若参数只有一个数值型数值n,则表示设置数组长度length=n;
- 浏览器封装
var myarry = []; //创建一个空数组
数组的访问:
- 通过下标索引访问 myarry[索引号]
- for 循环访问(首选) 返回索引号为数值型
- for ... in 循环访问 返回索引号为字符型
- forEach()遍历数组且无返回值
//forEach()遍历数组且无返回值 arryobj.forEach( function(形参1,形参2,形参3) { 形参1 //数组中的元素; 形参2 // 数组元素对应下标; 形参3 //原数组 } ) ;
- var newarry = arryobj.map(function(形参1,形参2,形参3){
形参1 //数组中的元素;
形参2 // 数组元素对应下标;
形参3 //原数组
return item}) ; 具有数组形式的返回值 映射遍历数组
- arry.reduce(function( val , item ,i , list ){
- val 初始值 当参数2省略时,初始值是下标为0的值; 当参数2设置时,val是参数2的值
- item 当前元素值;
- i 当前值的下标;
- list 原数组;
- },参数2)
- 过滤内容:filter( function ( item , i , list ){过滤条件;}) 返回值:满足过滤条件的新数组。
var myarry = [1,2.3,1.2,3.1,3]; // for(var i=0;i<myarry.length;i++){ // console.log(myarry[i]); // } // for(var i in myarry){ // console.log(myarry[i]); // } myarry.forEach(function(i,v,list){ console.log(i); console.log(v); console.log(list); })
数组对象方法:
- 删除最后一个元素: pop(); 返回值为删除的最后一个元素。
- 删除数组的第一个元素:shift(); 返回删除的元素。
- 向数组尾部添加元素 :push(添加元素1,元素2,,,,); 返回添加元素后新数组的长度。
- 向数组头部添加元素:unshift(添加元素1,元素2,,,,);返回添加元素后新数组的长度。
- 添加/删除元素 : splice(开始索引号,删除个数量,添加的新项目); 返回值 ——>删除元素组成的数组【】
- 排序:sort() 无参时默认按照unicode 编码顺序排序;传参时,需传入匿名函数function(a,b){return a-b;}升序 ; function(a,b){return b-a;}降序 。
var myarry = [1,2.3,1.2,3.1,3]; myarry.sort(); console.log(myarry); //[1, 1.2, 2.3, 3, 3.1] // 升序 myarry.sort(function(a,b){ return a-b; }); console.log(myarry); //[1, 1.2, 2.3, 3, 3.1] //降序 myarry.sort(function(a,b){ return b-a; }); console.log(myarry); //[3.1, 3, 2.3, 1.2, 1]
- 倒置: reverse() 数组元素倒序 返回新数组
- join(分隔符) 把数组内的元素拼接成一个字符串,根据分隔符进行连接,不传入分隔符默认按照 , 进行连接 ,返回值 ——> 字符串
- concat() 字符串 数组连接
- slice(开始,结束) 开始参数 必须要小于等于 结束参数 字符串数组均可使用
数组数据去重的三种方法:
//方法一:借助空数组 //思想原理:1.创建一个空数组 // 2.遍历查找原数组内的元素 是否在 新数组内存在,若不存在将该元素加入新数 组内 // 3.遍历结束,新数组为没有重复元素的元素组副本; function noreapt(arr){ var newarry = []; for(var i = 0; i < arr.length; i++) { if(newarry.indexOf(arr[i]) == -1) //新数组内查找不到该元素 { newarry.push(arr[i]); //将元素添加入新数组 } } return newarry; } var arry = [1,1,2.1,12,3,3,32.1,2]; var a = noreapt(arry); //调用 console.log(a); //[1, 2.1, 12, 3, 32.1, 2] //方法二:重复元素进行数组元素删除操作 for(var i = 0;i<arry.length;i++){ for(var j = i+1 ;j<arry.length;j++){ if(arry[i] == arry[j]){ arry.splice(j,1); //删除相同的数组元素,后面的元素下标一次减一 j--; //j也相应减一, } } } //方法三:借助过滤方法filter() arry.filter(function(item,i){ var a = arry.indexOf(item); return a === i; //返回满足 元素第一出现的位置和下标位置相同的元素,即后面重复出现的不返回; });
两组数组过滤出满足双方关键字的选项
// 过滤得到匹配keys数组的新数组 注:findIndex方法 获取数组中第一个值满足条件的索引
Array.prototype.filterByKey = function (keys, keyName = 'id') {
return keys && keys.length
? this.filter(item => keys.findIndex(key => key == item[keyName]) !== -1)
: []
}