首页 > 编程语言 >学习javascript的数组

学习javascript的数组

时间:2024-05-25 17:29:21浏览次数:14  
标签:arr 元素 console javascript 学习 let names 数组

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.总结

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

标签:arr,元素,console,javascript,学习,let,names,数组
From: https://blog.csdn.net/weixin_54454406/article/details/139182799

相关文章

  • 深入理解ECMAScript:JavaScript的规范与实践
    引言在当今的Web开发领域,JavaScript几乎无处不在。它不仅在客户端编程中占据主导地位,而且在服务器端(Node.js)和移动应用开发中也越来越受欢迎。然而,JavaScript的核心并非由单一的公司或组织控制,而是由一个国际标准组织——ECMAInternational通过ECMAScript规范来定义。本文将......
  • 【刷题笔记Day2】数组|977.有序数组的平方、209. 长度最小的子数组、59.螺旋矩阵II
    文章目录977.有序数组的平方解题思路遇到的问题及解决方案209.长度最小的子数组解题思路遇到的问题及解决方案59.螺旋矩阵II解题思路遇到的问题及解决方案总结977.有序数组的平方题目描述:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新......
  • Unity热更学习--Lua脚本使用C#中的事件、委托和协程
    [14]lua调用使用C#中的事件和委托C#脚本:继续在Student类中声明//声明委托和事件publicUnityActiondele;publiceventUnityActioneventAction;publicvoidDoDele(){if(dele!=null)dele();}publicvoidDoEvent(){if(eventAction!=null)......
  • Redis 源码学习记录:集合 (set)
    无序集合Redis源码版本:Redis-6.0.9,本篇文章无序集合的代码均在intset.h/intset.c文件中。Redis通常使用字典结构保存用户集合数据,字典键存储集合元素,字典值为空。如果一个集合全是整数,则使用字典国语浪费内存。为此,Redis设计了intset数据结构,专门用来保存整数......
  • C++基础知识学习笔记(4)——引用
    学习参考:https://www.bilibili.com/video/BV1et411b73Z?p=89&spm_id_from=pageDriver&vd_source=cc561849591f6a210152150b2493f6f3引用作用:给变量起别名语法:数据类型&变量=原变量;intmain(){ inta=10; int&b=a; b=20; cout<<b<<endl;//20 co......
  • 「终极收藏」前端开发必备:超全JavaScript公共方法大全
    目录引言1安装js-tool-big-box工具包1.1安装1.2截至目前的方法集合 2时间日期类 2.1更灵活的年月日时分秒2.2 日期时间转换2.3个性的时间组合 2.4 某个时间距离现在2.5 平年还是闰年2.6指定月份的天数 2.7属相2.8获取指定年份的法定节假日 3......
  • 学习笔记-主席树
    学习笔记-主席树主席树,就是可持久化权值线段树,也叫函数式线段树引入考虑如下问题:给定一个数列,查询其中第k大值显然,我们可以建一棵权值线段树,直接在上面二分就好了,即对于每个结点,查看它左子树的结点数量是否大于k,设为\(sum\)如果\(sum\gek\),则第k个结点在其左子树中,否则......
  • (读后总结)深度解析机器学习(全6册)萃取自然语言与智能图像处理的经验 (卡蒂克·雷迪·
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso机器学习基础:介绍了机器学习的基本概念、分类以及发展历程,为后续章节奠定了理论基础。深度学习原理:详细讲解了深度学习的原理、架构以及优化方法,为自然语言处理和图像处理提供了强大的技术支持。自然语言处理......
  • C++基础知识学习笔记(3)
    资料来源https://www.bilibili.com/video/BV1et411b73Z?p=84&vd_source=cc561849591f6a210152150b2493f6f3核心内容程序的内存模型代码区全局区在函数外面声明了全局变量,在main函数里面创建了局部变量,打印了其地址:静态变量:在普通变量前面加一个static,属于静态变量。静......
  • Minecraft中BossBar、Recipe的底层实现与扩展应用(学习笔记)
    看到有位博主写得很不错,直接上链接:《进度条与自定义合成表》本人在学习这篇博客的基础上进行实践与验证(使用1.12Bukkit接口开发),对上面的文件做几点总结与补充:正如文中所说,一定要记得在插件卸载时对注册的进度条和合成配方进行注销。文中所说的对进度条进行卸载的方法Buk......