数组的常用方法

数组常用的方法

  • 学习思路:通过四个维度
    • 方法的作用
    • 是否需要传參
    • 是否有返回值
    • 原数组发生改变
  • 数组常用的方法

数组方法有:数组的增加,删除,替换,拼接,数组转字符串,数组翻转,克隆,截取,排序,遍历

  var ary=["red","blue","green"]
  • 数组的增加
    -push()
    • 作用:给数组末尾增加一项
    • 参数: 需要实参
    • 返回值:数组的长度
    • 原数组发生改变
      let reg = ary.push("yellow");
      原数组:console.log(ary); //["red", "blue", "green","yellow"]
      返回值:console.log(reg);//4
    
  • unshift()

    • 作用:给数组开头增加一项
    • 参数:需要实参
    • 返回值:数组的长度
    • 原数组发生改变
      let reg = ary.unshift("yellow");
      原数组:console.log(ary); // ["yellow", "red", "blue", "green"]
      返回值:console.log(reg);//4
    
  • splice(index,0,要添加的内容)

    • 作用:增加
    • 参数:(索引,删除0个,要添加的内容)
    • 返回值:[] 空数组
    • 原数组发生改变

    添加的时候是在索引的前面添加

      let reg = ary.splice(0,0,"红色");
      //let reg = ary.splice(ary.length,0,"红色");//给数组末尾添加
      原数组:console.log(ary);//["红色", "red", "blue", "green"]
      返回值:console.log(reg);//[]
    
  • 数组的删除
    -shift()
    • 作用:删除数组开头一项
    • 参数:不需要参数
    • 返回值:删除的那一项
    • 原数组发生改变
      let reg = ary.shift();
      原数组:console.log(ary); // [ "blue", "green"]
      返回值:console.log(reg);//red
    
  • pop()
    • 作用:删除数组末尾一项
    • 参数:不需要参数
    • 返回值: 删除的那一项
    • 原数组发生改变
      let reg = ary.pop();
      原数组:console.log(ary); // [ "red",blue"]
      返回值:console.log(reg);// green
    
  • splice(index,2)
    • 作用:在指定的索引开始,删除几个;
    • 参数:(索引,删除几个)
    • 返回值:将删除的内容以一个新数组的形式返回
    • 原数组发生改变
      let reg = ary.splice(0, 2);
      //let reg = ary.splice(ary.length-1,1);//删除数组末尾一项
      原数组:console.log(ary);//["green"]
      返回值:console.log(reg);//["red", "blue"]
    
  • 数组的替换
    • splice(index,删除几个,要替换的内容)//删除几个不能为0,因为删除0个就是添加了
      • 作用:从指定的索引开始,删除几个,并替换我们要替换的内容;splice(index,deleteCount,'aaa','hhh')
      • 参数:三个参数
      • 返回值:被删除的内容以一个新数组的形式返回
      • 原数组发生改变
        let reg = ary.splice(0, 2,"黄色","粉色");
        原数组:console.log(ary);//["黄色", "粉色", "green"]
        返回值:console.log(reg);//["red", "blue"]
      
  • 数组的克隆
    • splice(0)
      • 作用:克隆,其实是删除了原数组,而返回值是删除的原来数组的内容;
      • 参数:参数为0
      • 返回值:将删除的内容以一个新数组的形式返回
      • 原数组发生改变
        let reg = ary.splice(0);
        原数组:console.log(ary);//[]
        返回值:console.log(reg);//["red", "blue", "green"]
      
    • concat()
      • 作用:克隆
      • 参数:空
      • 返回值:将克隆的内容以一个新数组返回
      • 原数组:不变
        let reg = ary.concat();
        原数组:console.log(ary);//["red", "blue", "green"]
        返回值:console.log(reg);//["red", "blue", "green"]
      
    • slice(为0或者空)
      • 作用:克隆
      • 参数:为0或者空
      • 返回值:将克隆的内容以一个新数组返回
      • 原数组:不变
        let reg = ary.slice();
        //let reg = ary.slice(0);
        原数组:console.log(ary);//["red", "blue", "green"]
        返回值:console.log(reg);//["red", "blue", "green"]
      
  • 数组的查找/截取
    • slice(n,m)
      • 作用:从索引n开始查找到索引m,包括前不包括后
      • 参数:两个
      • 返回值: 查找到的内容以一个新数组返回
      • 原数组不发生改变
        let reg = ary.slice(0,2);
        原数组:console.log(ary);//["red", "blue", "green"]
        返回值:console.log(reg);//["red", "blue"]
      

      面试题:找到数组中[n,m]项
      slice(n-1,m) // 第n项的索引是n-1,m的索引为m-1,但是slice包括前一项不包后括一项,m-1+1

  • 数组的拼接
    • concat()
      • 作用: 拼接/克隆数组
      • 参数:不确定,相拼接几个就写几个数组名,也可以直接可以写成数组形式
      • 返回值: 拼接成的新数组
      • 原数组不发生改变
        let reg = ary.concat("红色","黄色");
        原数组:console.log(ary);//["red", "blue", "green"]
        返回值:console.log(reg);// ["red", "blue", "green", "红色","黄色"]
      
       let ary1 = ["red", "blue", "红色"];
       let reg = ary.concat(ary,ary1);
       原数组:console.log(ary);//["red", "blue", "green"]
       返回值:console.log(reg);// ["red", "blue", "green","red", "blue", "green", "红色"]
      
  • 数组转字符串
    • toString()
      • 作用:将数组转为字符串,默认以‘ ,’分割
      • 参数:无
      • 返回值:以逗号分割的字符串
      • 原数组不发生改变
        let reg = ary.toString();
        console.log(ary);//["red", "blue", "green"]
        console.log(reg);// red,blue,green
        console.log(typeof reg);//string
      
    • join()
      • 作用:将数组转为字符串
      • 参数:分割形式
      • 返回值:以分割形式分割的字符串
      • 原数组不发生改变
        let reg = ary.join();
        console.log(ary);//["red", "blue", "green"]
        console.log(reg);// red,blue,green
        console.log(typeof reg);//string
      
        let reg = ary.join("+");
        console.log(ary);//["red", "blue", "green"]
        console.log(reg);// red+blue+green
        console.log(typeof reg);//string
      
  • 数组的翻转
    • reverse()
      • 作用:数组翻转
      • 参数:无
      • 返回值:被翻转后的数组
      • 原数组发生改变
        let ary = ["我", "是", "谁"];
        let reg = ary.reverse();
        console.log(ary);//["谁", "是", "我"]
        console.log(reg);// ["谁", "是", "我"]
      
  • 数组排序
    • sort
        ary.sort(function(a,b){
            return b-a;//从大到小排序
            //return b-a;//从小到大排序
        })
      
  • 数组常用但不兼容的方法
    • indexOf()
      • 作用:查找内容
      • 参数:要查找的内容
      • 返回值: 如果找到返回内容对应的索引,如果没找到返回-1
      • 原数组不变
        let ary = ["我", "是", "谁"];
        let reg = ary.indexOf("我");
        console.log(ary);//["谁", "是", "我"]
        console.log(reg);// 0
      
        let ary = ["我", "是", "谁"];
        let reg = ary.indexOf("去");
        console.log(ary);//["谁", "是", "我"]
        console.log(reg);// -1
      
  • forEach(callback,thisArg)
    • 作用:用来遍历数组
    • 参数:两个,第一个是回调函数,第二个是改变this的
    • 返回值: undefined 没有返回值
    • 原数组不变
    var ary=[10,20,30,40];
    ary.forEach(function(item,index,input){
      
    })
    
  • map()
  • 和forEach用法一样区别是map有返回值
  • 非数组方法
    • 给数组末尾添加

      • ary[arr.length]=xxx
          var ary=[1,2,3];
          ary[ary.length]=4;
          console.log(ary)//[1,2,3,4]
        
    • 删除数组最后一项

      • ary.length--
      • ary.length-=1
      • ary.length=ary.length-1
    • 实现数组克隆

      • for循环
      var ary=[1,2,3];
      var ary1=[]
      for(var i=0; i<ary.length;i++){
        ary1.push(ary[i])
        
      }
      console.log(ary1)//[1,2,3]
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容