JavaScript 学习笔记——基础篇(3)--数组

数组:存储一组数据

数组的创建:

  • 通过构造函数创建:
    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);
        })

数组对象方法:

  1. 删除最后一个元素: pop();  返回值为删除的最后一个元素。
  2. 删除数组的第一个元素:shift();   返回删除的元素。
  3. 向数组尾部添加元素 :push(添加元素1,元素2,,,,);  返回添加元素后新数组的长度。
  4. 向数组头部添加元素:unshift(添加元素1,元素2,,,,);返回添加元素后新数组的长度。
  5. 添加/删除元素  : splice(开始索引号删除个数量添加的新项目);  返回值 ——>删除元素组成的数组【】
  6. 排序: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)
      : []
  }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值