学习javascript的数组

1.什么是数组?

数组:(Array)是一种数据类型,属于引用数据类型。

作用:在单个变量名下存储多个数据

2.声明语法

let 数组名 =[数据1,数据2......];

注意事项:

数组是按照顺序保存(是有序的),所以,每一个数据都有自己的编号。

编号从0开始,数据的编号经常称为索引或下标。

数组可以存储任意类型的数据。

3.数组元素取值

数组名[索引];

   <script>
        //创建数组- 初始化数组
        let names =['张三','李四','王五'];
        //获取数组元素
        alert(names[0]);
    </script>

4.遍历数组

把数组中每个数据都访问到。

使用for循环遍历数组

数组的长度:通过数组.length属性获取。

<script>
        //创建数组- 初始化数组
        let names =['张三','李四','王五'];
        //获取数组元素
        // alert(names[0]);
        for(let i =0;i<names.length;i++){
                alert(names[i]);
        }
    </script>

5.demo 求数据的和和平均数,最大值和最小值

<script>
        let arr = [15, 20, 23, 22];
        let sum = 0;
        let maxNum = arr[0];
        let mixNum = arr[0];
		//如果要比较大小,可以不从0开始,重复比较了,但是这里笔者写在一起了
        for (let i = 0; i < arr.length; i++) {
            sum += arr[i];
            if (arr[i] < mixNum) {
                mixNum = arr[i];
            }
            if (arr[i] > maxNum) {
                maxNum = arr[i];
            }
        }
        console.log("数组的和:" + sum);
        console.log("数组的平均数:" + sum / arr.length);
        console.log("数组的最大值:" + maxNum);
        console.log("数组的最小值:" + mixNum);
    </script>

6.操作数组-增删改查

数组的本质就是数据集合,增删改查。

查询语法:

数组[索引];

如果查询不到就会返回undefined

修改数组元素

数组[索引] = 新值;

返回值:如果下标不存在,则是新增加一个元素,并且修改数组的长度。(这样做尽量避免)

新增元素

方法一:数组.push(新增元素);

作用:将一个或者多个元素添加到数组的末尾。

返回值:该数组的新长度,会修改原数组

    <script>
        //数组元素的新增
        let names =['张三','李四','王五'];
        //方法一:push
        names.push('赵六');
        names.push('姚明','刘翔');
        console.log(names);
//['张三', '李四', '王五', '赵六', '姚明', '刘翔']
    </script>

方法二:数组.unshift(新增数据);

作用:将一个或者多个元素添加到数组的开头。

返回值:该数组的新长度,会修改原数组

    <script>
        //数组元素的新增
        let names =['张三','李四','王五'];
		//省略方法一;。。。
        //方法二:unshift
        names.unshift('张飞');
        names.unshift('刘备','关羽');
        console.log(names);
//['刘备', '关羽', '张飞', '张三', '李四', '王五', '赵六', '姚明', '刘翔']
    </script>

删除元素

方法一:数组.pop();

作用:从数组中删除最后一个元素,修改原数组

返回值:该元素的值

方法二:数组.shift();

作用:从数组中删除第一个元素,修改原数组

返回值:该元素的值。

//数组元素的删除
        //方法一:数组名.pop();
        names.pop();
        console.log(names);

        //方法二:数组名.shift();
        names.shift();
        console.log(names);

数组.splice()方法 可以添加也可以删除数组元素。

说明:可以从指定位置删除或者增加数组的数组元素,注意它修改原数组。

做删除使用:splice(start,deleteCount);

返回被删除的元素。

start:起始位置,指定修改的开始位置(从0计数)

deleteCount:删除个数,表示要移除的数组元素的个数,可选的。如果省略则默认从指定的其实位置删除到最后。

做增加使用:splice(start,deleteCount,item1....);

 <script>
        let names =['张三','李四','王五'];
        //做删除使用
        names.splice(0,2);
        console.log(names);

        //做增加使用
        names.splice(1,0,'赵六','老七');
        console.log(names);
    </script>

7.demo 数组筛选

需求:将数组[10,23,5,12,84,65,11,12,36,0]中大于等于10的元素选出来,放入新数组中。

  <script>
        let arr = [10, 23, 5, 12, 84, 65, 11, 12, 36, 0];
        let newArr = [];
        for (let i = 0; i < arr.length; i++) {
            if(arr[i]>=10){
                newArr.push(arr[i]);
            }
            
        }
        console.log(newArr);
    </script>

需求:将数组[10,0,23,0,5,12,0,84,65,11,12,36,0]进行筛选,形成一个不包含0的新数组。

 <script>
        let arr = [10,0,23,0,5,12,0,84,65,11,12,36,0];
        let newArr =[];
        for(let i=0;i<arr.length;i++){
            if(arr[i]!==0){
                newArr.push(arr[i]);
            }
        }
        console.log(newArr);
    </script>

8.数组排序

数组.sort();方法可以排序

语法:数组.sort();会修改原数组

 <script>
        let arr = [15, 2, 65, 21, 333, 57, 1, 25, 69];

        //升序排列
        arr.sort(function(a,b){
            return a-b;
        });
        console.log(arr);
        //降序排列
        arr.sort(function(a,b){
            return b-a;
        });
        console.log(arr);
    </script>

9.选择排序

原理:就是从第一个数开始,与后面所有的数组比较,找出最小(最大)的数,放在第一个位置。依次类推,每一个确定一个相对于这一轮最小(最大)的数。

核心:利用循环嵌套比较,根据索引号来进行交换变量

①:外层循环是一共进行几轮比较,一共进行数组长度-1次进行比较

for(let i=0;i<arr.length-1;i++)

把i作为最小值起始索引minIndex

②:里层循环是每一轮的比较来查找最小值

里层循环起始值是i+1个元素开始查找

for(let j=1;j<arr.length;j++)

进行比较的时候 ,发现最小的数组元素,把当前元素索引号给minIndex

③:如果minIndex和i位置不一致,则交换变量。

<script>
        let arr=[11,8,22,15,3,31,20];
        //1.循环嵌套的方式 外层循环 控制比较次数
        for(let i =0;i<arr.length;i++){
            //2.定义一个变量,这个变量保存假定的最小数组元素的index
            let MinIndex = i;
            //外层循环 拿着第一个数,和每一个数做比较
            for(let j=i+1;j<arr.length;j++){
                if(arr[j]<arr[MinIndex]) {
                    //如果假定的最小值,比当前这一项还大,那么就保存索引
                    MinIndex = j;
                }
            }
            //4.交换位置
            if(MinIndex !== i){
                //如果最小值的索引不等于原来的索引,那么就证明拿到新的最小值
                let temp =arr[MinIndex];
                arr[MinIndex] = arr[i];
                arr[i]=temp;
            }
        }
        console.log(arr);
    </script>

10.总结

以上文章是笔者的学习笔记,如果您在浏览或者运行代码的时候发现了错误,还请您在第一时间在评论区留言,笔者会在第一时间解决,谢谢。

  • 33
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与风过山岗

您的鼓励是我莫大的荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值