JavaScript【三】JavaScript中的数组

文章目录

  • 🌟前言
  • 🌟数组
    • 🌟声明:
      • 🌟 隐式创建:
      • 🌟 实例化构造函数:
    • 🌟 注意:一个值为数组的长度。
    • 🌟 访问:
    • 🌟 遍历:
    • 🌟二维数组:
      • 🌟 声明:
      • 🌟访问:
      • 🌟遍历:
  • 🌟数组的属性和方法:
    • 🌟属性
    • 🌟方法
      • 🌟arr.push(); 向数组的末尾追加元素
      • 🌟arr.unshift(); 向数组的开头添加函数
      • 🌟arr.pop(); 删除末尾的元素
      • 🌟arr.shift(); 开头删除一个元素
      • 🌟arr.splice (位置,删除元素的个数,要追加的元素); 任意位置添加删除
      • 🌟arr.join("分隔符") 使用分隔符将数组数据隔开变为字符串
      • 🌟arr.slice(截取的起始下标,结束下标) 数组的截取
      • 🌟arr.concat 多个数组的连接
      • 🌟arr.indexOf(值); 查找某个值在数组中第一次出现的下标
      • 🌟arr.lastIndexOf(值); 倒叙查找某个值在数组中第一次出现的位置
      • 🌟arr.sort(回调函数) 数组的排序
      • 🌟arr.forEach(回调函数) 遍历数组
      • 🌟arr.filter(回调函数) 过滤(根据条件筛选数组元素)
      • 🌟arr.map(回调函数) 映射 将数组中的所有数据按照条件改变,形成新数组 {重点}
      • 🌟arr.some(回调函数) 判断 根据回调函数的判断条件来选择真假
      • 🌟arr.every(回调函数) 判断 根据回调函数的判断条件来选择真假(与some比较记忆)
      • 🌟arr.reverse() 数组倒序
      • 🌟Array.from
      • 🌟Array.of
      • 🌟arr.includes()
      • 🌟 数组乱序
  • 🌟写在最后

在这里插入图片描述

🌟前言

哈喽小伙伴们,本文将收录在JavaScript【前端童子功】这个专栏里;这个专栏里边会收录一些JavaScript的基础知识和项目实战;希望大家可以多多支持,你们的支持就是我创作的动力;让我们一起来看看吧🤘

🌟数组

用来存储一组或一系列相关数据的容器。

🌟声明:

🌟 隐式创建:

var arr=[];
arr[0]="a",arr[1]="b",arr[2]="c"

var arr=[a,b,c];

🌟 实例化构造函数:

var arr=new Array(3//指长度);
arr[0]=1;arr[1]=2;arr[2]=3;

var arr=new Array(1,2,3);

🌟 注意:一个值为数组的长度。

var arr=new Array(5);
//利用实例化构造函数的方式创建数组,只传一个值,表示数组长度。

🌟 访问:

  • 下标范围:0~数组长度减一 0-arr.length-1
  • 通过下标访问数组元素 arr[0] arr[arr.length-1]
  • 数组长度:arr.length
  • 数组中可以存储任意数据类型的数据
  • 数组可以允许越界访问(可以访问超出下标的数据,结果为undefined)

🌟 遍历:

循环访问数组中的每一个元素。

  • for循环
  for(var i=0;i=arr.length;i++){
      arr{i}
  }
  • for in
for(var i in arr){
    i;//下标
    arr[i];//元素
}
  • for of
for(var i of arr){
    i;//元素
}

🌟二维数组:

一维数组中的每一个元素都是一个数组,叫做二维数组。

🌟 声明:

var arr[[1,2],[2,3],[3,4,5]]

🌟访问:

  • 长度:按照一维数组的长度计算,arr.length
  • 通过双重下标访问:arr[i][j]

🌟遍历:

for(var i=0;i<arr.lenght;i++){
    for(var j=0;j<arr[i].length;j++)
        arr[i][j];
}

🌟数组的属性和方法:

🌟属性

  1. length: 数组中元素的个数
  2. constructor: 返回对创建此对象的数组函数的引用(可以用来判断变量是否为数组)

🌟方法

🌟arr.push(); 向数组的末尾追加元素

  • 会修改原数组

  • 返回值:修改后的length值

  • 可以追加多个

    arr[1,2,3];
    arr1[4,5,6];
    arr2[...arr,...arr1];       //  ...扩展运算符,将数组展开
    

🌟arr.unshift(); 向数组的开头添加函数

  • 会修改原数组
  • 返回值:修改后的length值
  • 可以追加多个

🌟arr.pop(); 删除末尾的元素

  • 会修改原数组
  • 返回值:被删除的数据
  • 只能删除一个

🌟arr.shift(); 开头删除一个元素

  • 会修改原数组
  • 返回值:被删除的数据
  • 只能删除一个

🌟arr.splice (位置,删除元素的个数,要追加的元素); 任意位置添加删除

  • 添加或者删除包含对应下标
  • 添加数据时:删除元素的个数写0;
  • 可以同时删除和添加(先删除,后添加)
  • 修改原数组

🌟arr.join(“分隔符”) 使用分隔符将数组数据隔开变为字符串

  • 不修改原数组
  • 返回值是分隔好的字符串

🌟arr.slice(截取的起始下标,结束下标) 数组的截取

  • 截取时,包含起始下标,不包含结束下标
  • 不修改原数组
  • 返回值是截取到的数组
  • 参数可以是负数,负数表示倒数,只传一个参数表示从起始下标截取到最后

🌟arr.concat 多个数组的连接

  • 不修改原数组

  • 返回值是连接之后的新数组

    var arr1=[1,2,3];
    var arr2=[4,5,6];
    console.log(arr1.concat(arr2,[7,8,9]));
    
    // 控制台输出
    // (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    Array.prototype.push.apply(a,b)   //b为push参数
    

🌟arr.indexOf(值); 查找某个值在数组中第一次出现的下标

  • 返回值是数据的下标,没有找到则返回-1

    var arr=[1,5,6,99,52,663,22,66,552,123,6,622];
    console.log(arr.indexOf(22));    //查找22在arr数组中的位置
    
    // 控制台输出
    // 6
    

🌟arr.lastIndexOf(值); 倒叙查找某个值在数组中第一次出现的位置

🌟arr.sort(回调函数) 数组的排序

  • 如果没有参数,则从字符的编码开始按顺序排

  • 如果有参数,这个参数必须是一个函数(回调函数)这个回调函数有两个参数,分别是a,b

  • 修改原数组

  • 返回值是排序之后的数组

      var arr3=[1,5,6,99,52,663,22,66,552,6,622];
      arr3.sort(function(a,b){
      //a-b 正序,
      //b-a 倒序,  
      return a-b;
      })
      console.log(arr3);
      // 控制台输出
      // (11) [1, 5, 6, 6, 22, 52, 66, 99, 552, 622, 663]
      //箭头函数
      arr.sort((a,b)=>a-b)     //正序,
      arr.sort((a,b)=>b-a)     //倒序,

🌟arr.forEach(回调函数) 遍历数组

  • 接收一个回调函数,回调函数第一个参数是 数组值

  • 第二个参数是 下标

      var arr3=[1,5,6,99,52,663,22,66,552,6,622];
      var num=0;
      arr3.forEach(function(value,index){
          num+=v;
        console.log(index,value)
      })
      // 箭头函数
      arr3.forEach((value,index)=>{console.log(index,value)})

🌟arr.filter(回调函数) 过滤(根据条件筛选数组元素)

  • 根据回调函数的返回值进行元素筛选
    - 返回值是true,该元素会保留
    - 返回值是false,该元素跳过

  • 不修改原数组

  • 返回值是筛选之后的数组

    var arr=[1,5,6,99,52,663,22,66,552,123,6,622];
    var newArr =arr.filter(function(value(值),index(下标)){
    return value>100;       //筛选arr数组中值大于100的元素;
    })
    console.log(newArr);
    // 控制台输出
    // (4) [663, 552, 123, 622]
    
    var person = [
    {name: "张三",age:20,sex: "男"},
    {name: "李四",age:19,sex: "女"},
    {name: "王五",age:22,sex: "男"},
    {name: "赵六",age:21,sex: "女"}
    ];
    var x =person.filter(function(value,index){
    return value.age>20;           // 筛选出年龄大于20岁的学生
    // return value.sex=="男";     //筛选出男同学
    })
    console.log(x);
    // 箭头函数
    arr.filter((value,index)=>{return 判断条件})
    

🌟arr.map(回调函数) 映射 将数组中的所有数据按照条件改变,形成新数组 {重点}

  • 将回调函数每次的返回值,组成一个新的数组

  • 返回值是映射改变之后的数组

  • 不修改原数组

      var arr=[1,5,6,99,52,663,22,66,552,123,6,622];
      // var end=arr3.map(function(value,index){
      //     return value*2;        //将数组中的所有元素都乘以2返回
      // });
      // 箭头函数
      var end = arr.map((value,index)=>value*2);
      console.log(end);

🌟arr.some(回调函数) 判断 根据回调函数的判断条件来选择真假

  • 只要有一个回调函数返回值是true,最终some结果是true;
     var arr3=[1,5,6,99,52,663,22,66,552,123,6,622];
     var end=arr3.some(function(value,index){
     return value<500;
     });
     console.log(end);     //true

🌟arr.every(回调函数) 判断 根据回调函数的判断条件来选择真假(与some比较记忆)

  • 只要有一个回调函数返回值是false,最终every结果是false;
      var arr3=[1,5,6,99,52,663,22,66,552,123,6,622];
      var end=arr3.every(function(value,index){
      return value<500;
      });
      console.log(end);     //false

🌟arr.reverse() 数组倒序

  • 返回修改后的数组

  • 改变原数组

      var arr=[1,5,8,6,9,4,2,3];
      console.log(arr.reverse());     // (8) [3, 2, 4, 9, 6, 8, 5, 1]
      console.log(arr);               // (8) [3, 2, 4, 9, 6, 8, 5, 1]

🌟Array.from

方法用于将两类对象转为真正的数组:类似数组的对象和可遍历的对象(包括 ES6 新增的数据结构 Set 和 Map)

      var a={length:2,0:'aaa',1:'bbb'};  
      Array.from(a);        //['aaa','bbb']
      // 原理:Array.prototype.slice.call(a);
      var b={length:2};  
      Array.from(b);       //[undefined.undefined]

🌟Array.of

  • Array.of方法用于将一组值,转换为数组。
    总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
     Array.of() // []
     Array.of(undefined) // [undefined]
     Array.of(1) // [1]
     Array.of(1, 2) // [1, 2]

🌟arr.includes()

  • 用于检查数组是否包含某元素,包含返回true,否则返回false

  • 无法检测对象是否存在

  • 假如只想知道某个值是否在数组中而并不关心它的索引位置,建议使用

 includes()

如果想获取一个值在数组中的位置,那么你只能使用 indexOf 方法。并且 includes() 可以识别NaN

      var arr = [1,2,{name:"张三"}]
      arr.includes(2)     // true
      arr.includes(4)     // false
      arr.includes({name:"张三"})     // false
  • 可接收俩个参数:
    要搜索的值,搜索的开始索引
      ['a', 'b', 'c', 'd'].includes('b')         // true
      ['a', 'b', 'c', 'd'].includes('b', 1)      // true
      ['a', 'b', 'c', 'd'].includes('b', 2)      // false

🌟 数组乱序

将数组顺序打乱:例如不重复随机选取数组内容,可将数组打乱后按顺序取出

arr.sort(()=>Math.random()-0.5) 数组乱序排列

var arr=[1,2,3,4,5,6,7,8,9];
arr.sort(()=>Math.random()-0.5)
console.log(arr);

🌟写在最后

更多JavaScript知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/12955.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈(Eureka、Ribbon)

微服务技术栈导学 微服务技术是分布式架构&#xff08;把服务做拆分&#xff09;的一种 而springcloud仅仅是解决了拆分时的微服务治理的问题&#xff0c;其他更复杂的问题并没有给出解决方案 一个完整的微服务技术要包含的不仅仅是springcloud 微服务技术栈 包括什么 …

深度学习中的各种不变性

不变性 平移不变性&#xff08;Translation Invariance&#xff09;旋转不变性&#xff08;Ratation Invariance&#xff09;尺度不变性&#xff08;Size Invariance&#xff09;光照不变性&#xff08;Illumination Invariance&#xff09;仿射不变性&#xff08;Affine Invar…

springcloud2.1.0整合seata1.5.2+nacos2.10(附源码)

springcloud2.1.0整合seata1.5.2nacos2.10&#xff08;附源码&#xff09; 1.创建springboot2.2.2springcloud2.1.0的maven父子工程如下&#xff0c;不过多描述&#xff1a; 搭建过程中也出现很多问题&#xff0c;主要包括&#xff1a; 1.seataServer.properties配置文件的组…

第二部分——长难句——第一章——并列句

conjunction(and,but,if,when(while)) 想把两个句子&#xff08;多件事&#xff09;连在一块&#xff0c;就必须加上连词。 所以长难句到底是啥&#xff1f; 所以长难句&#xff08;直白表达&#xff0c;并不是语法表述&#xff09;就是几个简单句多家上几个连接词就齐活了&am…

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中&#xff0c;不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…

C++STL大全----容器篇(上)

&#xff08;一&#xff09;概念 STL&#xff0c;英文全称 standard template library&#xff0c;中文可译为标准模板库或者泛型库&#xff0c;其包含有大量的模板类和模板函数&#xff0c;是 C 提供的一个基础模板的集合&#xff0c;用于完成诸如输入/输出、数学计算等功能。…

2023-04-21 学习记录--C/C++-实现升序降序(冒泡法/沉底法)

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、冒泡法(沉底法) —— 升序 ⭐️ &#xff08;一&#xff09;、思路 从左到右&#xff1a; 1、第一个与第二个比较&#xff0…

RK3568平台开发系列讲解(调试篇)IS_ERR函数的使用

🚀返回专栏总目录 文章目录 一、IS_ERR函数用法二、IS_ERR函数三、内核错误码沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 IS_ERR 函数的使用。 一、IS_ERR函数用法 先看下用法: 二、IS_ERR函数 对于任何一个指针来说,必然存在三种情况: 一种是合…

微信小程序开发(学习记录1.0)

首先&#xff0c;把遇到的问题贴出来&#xff0c;主要是这个解决问题的思路&#xff0c;供大家参考。 现在的问题是将下面的导航栏做出来&#xff0c;但是在自己做的时候 遇到的问题 在app.json文件中输入tarBar&#xff0c;就会生成模板代码&#xff0c;默认会生成一个list的模…

树莓派 QT项目开机自启动

我自己用qt设置了一个界面&#xff0c;如何让他开机自启动呢&#xff1f; 目录 1.生成qt项目的可执行文件 2. 编写一个自启动脚本 3.重启树莓派 1.生成qt项目的可执行文件 QT项目的可执行文件就是.exe文件。首先在qt中打开&#xff0c;点击红色方框图标&#xff0c;选择Re…

Oracle函数记录

一、各个函数介绍 1.OVER(PARTITION BY… ORDER BY…)--开窗函数 1.开窗函数用于为行定义一个窗口&#xff08;这里的窗口是指运算将要操作的行的集合&#xff09;&#xff0c;它对一组 值进行操作&#xff0c;不需要使用GROUP BY子句对数据进行分组&#xff0c;能够在同一…

软件测试?月薪20k+?不会自动化测试的我真的很难....

做自动化测试后悔吗&#xff1f; 后悔&#xff0c;真的后悔&#xff01; 后悔没有早点学..... 虽然现在网上到处都在散播35的焦虑&#xff0c;姑且信之&#xff0c;那么反问你&#xff0c;如果你30岁了&#xff0c;那么给你5年&#xff0c;能够在某个领域成为专家呢&#xf…

《花雕学AI》ChatGPT跟人类的思考方式有什么不同?

一、ChatGPT是一个基于GPT-3.5的对话语言模型&#xff0c;它可以根据用户的输入生成多轮对话&#xff0c;也可以生成文本、代码、音乐等内容。ChatGPT的思考方式是利用大量的数据和强大的算力来学习语言的联合概率分布&#xff0c;从而能够根据上下文和目标生成合理和有趣的回复…

python文本自动伪原创-ai一键伪原创

chatgpt批量伪原创的优势 ChatGPT是一个由OpenAI开发的强大的自然语言处理模型&#xff0c;它具有批量伪原创的优势&#xff0c;以下是这些优势&#xff1a; 模型能够处理大量的数据&#xff1a;ChatGPT通过训练大规模的语言模型来生成伪原创文本。这个模型拥有一个庞大的语料…

GaussDB工作级开发者认证—第二章GaussDB数据库应用程序开发指引

一. 驱动概述 GaussDB客户端接入认证&#xff0c;GaussDB支持以下三种认证方式&#xff1a;基于主机的认证口令认证SSL加密 二. JDBC接口介绍 1. JDBC概述 Java数据库连接&#xff08;JDBC&#xff09;是Java标准&#xff0c;它提供了从Java连接到关系数 据库的接口&#x…

数据挖掘:心脏病预测(测评指标;EDA)

目录 一、前期准备 二、实战演练 2.1分类指标评价计算示例 2.2数据探索性分析&#xff08;EDA&#xff09; 2.2.1 导入函数工具箱 2.2.2 查看数据信息等相关数据 判断数据缺失和异常 数字特征相互之间的关系可视化 类别特征分析&#xff08;箱图&#xff0c;小提琴图&am…

5.2 中心极限定理

学习目标&#xff1a; 要学习中心极限定理&#xff0c;我会采取以下几个步骤&#xff1a; 学习基本概念&#xff1a;了解什么是随机变量、样本、总体、概率密度函数等基本概念&#xff0c;为学习中心极限定理打下基础&#xff1b;学习正态分布&#xff1a;中心极限定理的核心…

windows搭建ftp及原理(小白向)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 环境一、实验步骤1.1安装ftp 二、ftp实验引发的思考1.简单阐述ftp的原理2.ftp建立的流程 总结 环境 windwos任意环境不需要server windows10 提示&#xff1a;以下…

【Linux】System V IPC-命名管道共享内存消息队列

System V IPC-命名管道&共享内存&消息队列 命名管道共享内存创建共享内存附加和分离共享内存 消息队列消息队列的接口 命名管道 使用mkfifo命令&#xff0c;创建一个命名管道&#xff0c;通过ll可以查看当前命名管道的类型 p类型&#xff0c;也就是pipe管道类型。 之…

Vector - CAPL - Panel面板_01

前面有过简单的介绍panel面板的功能&#xff0c;不过终究感觉有点简陋&#xff0c;最近也在搞PyQT5&#xff0c;发现如果对于这块了解不多的情况下&#xff0c;想要做一些东西的话&#xff0c;简直无从下手&#xff0c;因此专门翻阅了之前的文章&#xff0c;查看了下确实缺少了…