JS从零开始(20)

128 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情

数组元素的添加

数组元素添加有两种方法:

  • 修改数组长度
  • 修改索引号

修改数组长度

        //修改数组长度
        var arr = ['red', 'blue', 'green', 'pink'];
        console.log(arr.length);//4
        arr.length = 10;
        console.log(arr);
        console.log(arr[7]);//undefined

ps:打印数组中没有的数组元素会返回undefined

修改索引号

        //修改索引号
        var arr1 = ['red', 'blue', 'green', 'pink'];
        arr1[4] = 'purple';
        console.log(arr1);//['red', 'blue', 'green', 'pink', 'purple']
        arr1[5] = 'yellow';
        console.log(arr1);
        arr1[0] = 'black';//替换第一个数组元素
        console.log(arr1);// ['black', 'blue', 'green', 'pink', 'purple', 'yellow']

ps:对数组进行的操作都是通过索引号来实现的

两种数组

1、稀疏数组?

稀疏数组可以理解为数组元素之间有空隙,数组长度大于数组元素个数,不建议创建稀疏数组

2、密集数组?

密集数组也就是我们常用的数组,数组元素之间没有空隙,可以通过索引号精确的查找各个数组元素的位置,我们平常创建的数组就是密集数组,数组长度等于数组元素的个数

几个例题

求数组中最大的数组元素?

        var arr = [2, 6, 1, 77, 52, 25, 7];//字面量创建数组
        var max = arr[0];//假设第一个数组元素最大
        for (var i = 1; i <= arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
                //遍历数组元素,若遍历到的数组元素大于max,则交换元素
            }
        }
        console.log('数组中最大值是' + max);//数组中最大值是77

其实这个例题的核心算法就是一个if判断语句,大于则交换,其他情况不做处理

数组转换为字符串?

        var arr = ['red', 'blue', 'green', 'pink'];//字面量创建数组
        var str = '';//声明一个字符串变量,下面要用到
        for (var i = 0; i < arr.length; i++) {
            str += arr[i] + '|';//通过遍历用'|'隔开
        }
        console.log(str);//red|blue|green|pink|

核心算法for语句遍历,直接用赋值运算符和字符串拼接的方式转换为字符串,方便简洁。

给大家留两个小题: 反转数组和冒泡排序(从小到大排序)

提示:

  • 反转数组核心算法:arr2[i] = arr1[arr1.length - i - 1]
  • 冒泡排序:双重for循环,相邻元素进行比对,若前者大于后者,则交换(重新声明一个临时变量)