JS数组

数组

1.数组:就是在内层中,开辟一段连续的空间,存储一组数据

如果需要维护多组数据,之前我们需要定义很多个变量,维护会相对比较麻烦

        let score1 = 55;

        let score2 = 66;

        let score3 = 77;

        let score4 = 88;

        let score5 = 99;

        //通过变量名获取变量中保存的数据

        let sum1 = score1+score2

        console.log(sum1);    //输出121

        //现在可以通过一个数组统一维护

        let scores = new Array(5);    //创建一个长度为5的数组空间(在内存中连续开辟了一个长度为5的存储空间)

2.通过数组的下标,往数组中存储数据

        scores[0] = 55;

        scores[3] = 66;

        通过数组的下标,从数组的指定空间里面获取数据

        let sum2 = scores[0] + scores[3]

        console.log(sum2);    //输出121

        console.log(scores);    //[55, empty × 2, 66, empty]

3.注意:在其他的编程语言中,定义数组时,必须要明确数组的长度,但是,js中不需要。

        //在js中,数组的长度是弹性的

        let scores2 = new Array()

        scores2[0] = 55

        scores2[8] = 66

        console.log(scores2);    //[55, empty × 7, 66]

4.在js中,定义数组有两种方式:1.采用数组的构造函数new,2.使用字面量直接赋值

        let scores3 = new Array('苹果','香蕉')

        console.log(scores3);    //['苹果', '香蕉']

        let scores4 = ['葡萄','榴莲']

        console.log(scores4);    //['葡萄', '榴莲']

5.length属性,返回数组的长度

        console.log(scores4.length);    //输出2

数组练习

1.定义数组保存5名学生的成绩,并算出5名学生的平均分

        let scores = new Array(5);    //创建一个长度为5的数组

        let sum = 0;    //定义总分

        //循环出数组的所有下标

        for(let i=0;i<scores.length;i++){

            // 通过数组的下标,给数组的指定空间赋值

            scores[i] = parseInt(prompt(`请输入第${i+1}位学员成绩:`))

            //累加总分

            sum += scores[i];

        }

        console.log('所有学生的成绩:'+scores);

        console.log('学生的平均分:'+(sum/5));

数组的常用方法

1.concat()方法,用于合并两个或多个数组,返回一个全新的数组

        let arr1 = [11,22,33]

        let arr2 = [44,55,66]

        let arr3 = arr1.concat(arr2)

        console.log(arr3);    //输出[11, 22, 33, 44, 55, 66]

2.copyWithin()方法,从数组的指定位置拷贝元素到数组的另一个指定位置中

注意:第一个参数是目标位置,第二个参是拷贝元素的起始位,第三个参数是拷贝元素的结束位置(取不到结束位置)。如果不设置第三个参数,表示从拷贝元素的起始位到最后全部返回。
注意:拷贝元素是覆盖原元素,最终的数组的长度是不变的。

        let arr4 = [11,22,33,44,55,66,77,88]

        let arr = [11,22,33,44,55,66,77,88]

        arr4.copyWithin(2,4,6);

        arr.copyWithin(2,4);

        console.log(arr4);    //输出[11, 22, 55, 66, 55, 66, 77, 88]

        console.log(arr);    //输出[11, 22, 55, 66, 77, 88, 77, 88]

3. fill()方法,使用一个固定值来填充数组

        let arr5 = new Array(5)

        arr5.fill(50)

        console.log(arr5);    //输出[50, 50, 50, 50, 50]

4.includes()方法,从数组中检查指定的数据是否存在,存在返回true,不存在返回false

indexOf()方法,从数组中检查指定的数据的位置(从前往后找第一个),不存在返回-1

lastIndexOf()方法,从数组中检查指定的数据的位置(从后往前找第一个),不存在返回-1

        let arr6 = [11,22,33,44,55,44,77,88]

        console.log(arr6.includes(44));         //输出true

        console.log(arr6.includes(38));     //输出false

        console.log(arr6.indexOf(44));     //输出3

        console.log(arr6.indexOf(38));     //输出-1

        console.log(arr6.lastIndexOf(44));     //输出5

        console.log(arr6.lastIndexOf(38));     //输出-1

5.isArray()方法,用于检查指定的对象是否是数组,注意:该方法属于Array类型,不属于Arrary的对象

        let str1 = 'hello'

        console.log(Array.isArray(str1));    //输出false

        console.log(Array.isArray(arr6));    //输出true

6.join()方法,用于将一个数组根据某个字符串拼接成字符串,该方法不传参数,默认是根据逗号拼接

        console.log(arr6.join('你好呀'));    //输出11你好呀22你好呀33你好呀44你好呀55

                                                                        你好呀44你好呀77你好呀88

        console.log(arr6.join(''));    //输出1122334455447788

        console.log(arr6.join());    //输出11,22,33,44,55,44,77,88

7.push()方法,向数组的末尾添加一个或更多元素,并返回新的长度

        let arr7 = [11,22,33]

        arr7.push(44)

        console.log(arr7);    //输出[11, 22, 33, 44]

8.pop()方法,删除数组的最后一个元素并返回删除的元素

        arr7.pop()

        console.log(arr7);    //输出[11, 22, 33]

9.unshift()方法,向数组的开头添加一个或更多元素,并返回新的长度

        arr7.unshift(55)

        console.log(arr7);    //输出[55, 11, 22, 33]

10.shift()方法,删除并返回数组的第一个元素

        arr7.shift()

        console.log(arr7);    //输出[11, 22, 33]

11.reverse()方法,反转数组的元素顺序

        arr7.reverse()

        console.log(arr7);    //输出[33, 22, 11]

12.slice()方法,选取数组的一部分,并返回一个新数组

注意:该方法的第一个参数是起始位置,第二个参数是结束位置(取不到结束位置)

第二个参数可以省略,表示从起始位置到最后全部返回

        let arr8 = [11,22,33,44,55,66,77,88,99]

        console.log(arr8.slice(3,6));     //输出[44, 55, 66]

        console.log(arr8.slice(3));     //输出[44, 55, 66, 77, 88, 99]

13.repeat()是字符串的方法,用于重复指定的字符串多少次

        console.log('!'.repeat(30));    //输出!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

14.splice()方法,从数组中添加或删除元素

如何删除,该方法需要传两个参数:第一个是起始位置,第二个是删除长度

如果第二个参数不传,就表示从起始位置往后全部删除

删除方法,删除的是原始数组里面的数据,返回的是删除的数据

该方法也可以传三个参数,第三个参数就是删除部分插入的新内容

        // arr8.splice(4,3)    //删除指定区间的数据

        // arr8.splice(4)    //从起始位置往后全部删除

        // arr8.splice(4,3,'哈哈')    //删除部分的内容替换成新的内容(修改数组的内容)

        arr8.splice(4,0,'哈哈')    //在数组的指定位置插入内容

        console.log(arr8);    //输出[11, 22, 33, 44, '哈哈', 55, 66, 77, 88, 99]

15.toString()方法,把数组转换为字符串,并返回结果。效果跟join方法不传参数一样。

        console.log(arr8.toString());    //输出11,22,33,44,哈哈,55,66,77,88,99

反转字符串

split()方法,用于将字符串根据某个字符串打散成数组

        let s1 = "我喜欢吃苹果,喜欢吃桃子,喜欢吃香蕉"

        // 将字符串根据“喜欢”打散成数组

        console.log(s1.split('喜欢'));    //输出['我', '吃苹果,', '吃桃子,', '吃香蕉']

        // 将字符串中的所有字符打散成数组

        console.log(s1.split(''));    //输出['我', '喜', '欢', '吃', '苹', '果', ',', '喜', '欢', '吃', '桃', '子', ',',                                                             '喜', '欢', '吃', '香', '蕉']


        let str = '好好学习,天天向上'

        // 01.将字符串打散成数组

        let arr = str.split('')

        // 02.数组反转一下

        arr.reverse()

        // 03.将数组拼接陈字符串

        let str2 = arr.join('')

        console.log(str2);    //输出上向天天,习学好好


        //字符串和数组的所有方法,可以链式调用

        console.log(str.split('').reverse().join(''));     //输出上向天天,习学好好

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

推荐阅读更多精彩内容