JavaScript【4】数组和其他内置对象(API)

1.数组:

1.概述:

  •    js中数组可理解为一个存储数据的容器,但与java中的数组不太一样;
    
  •    js中的数组更像java中的集合,因为此集合在创建的时候,不需要定义数组长度,它可以实现动态扩容;
    
  •    js中的数组存储元素时,可以存储任意类型的元素,而java中的数组一旦创建后,就只能存储定义类型的元素;
    

2.数组的创建:

1.方式1:通过new关键字创建(不常用);

 let arr = new Array();arr[0]=元素1;arr[1]=元素2;........

2.方式2:通过字面量直接创建:

let arr=[元素1,元素2,.....]
let arr = ['这是数组的元素', 1, true, {name: '张三'}, null];
//Array.isArray(arr):判断是否为数组,如果通过typeof操作符来验证,数组会返回Object
console.log(Array.isArray(arr),arr);

3.数组的操作方法:

1.遍历数组:

方式1:for循环:
let arr = ['这是数组的元素', 1, true, {name: '张三'}, null];
for (let i = 0; i < arr.length; i++) {console.log(arr[i])}

方式2:foreach循环(IE8以下的浏览器可能不支持)
let arr = ['这是数组的元素', 1, true, {name: '张三'}, null];
//value 元素, index下标, array数组本身arr.forEach(function (value, index, array) {console.log(value, index)})
            ![](https://cdn.nlark.com/yuque/0/2024/png/45532635/1731668979439-27e8c586-0ba8-4a27-bf8d-a9757ffda30e.png)

2.追加元素:

1.数组末尾追加元素:push()
 let arr = ['这是数组的元素', 1, true, {name: '张三'}, null]; arr.push('追加数据1', '追加数据2');console.log(arr);

2.数组头部添加元素:unshift()
  let arr = ['这是数组的元素', 1, true, {name: '张三'}, null]; arr.unshift('追加数据1', '追加数据2');console.log(arr);

3.删除元素:

1.删除末尾元素:pop()
  let arr = ['这是数组的元素', 1, true, {name: '张三'}, null]; arr.pop();console.log(arr);

2.删除首位元素:shift()
  let arr = ['这是数组的元素', 1, true, {name: '张三'}, null]; arr.shift('追加数据1', '追加数据2');console.log(arr);

4.数组反转:会改变原数组:reverse()

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

5.数组排序:默认按照Unicode编码排序:sort()

let arr = [5, 68, 8, 6, 3, 2, 4, 5, 6, 8, 7, 1, 32, 3];
arr.sort();
console.log(arr);

如果需要按照自定义的排序规则进行排序,就需要重写这个方法

let arr = [5, 68, 8, 6, 3, 2, 4, 5, 6, 8, 7, 1, 32, 3];
arr.sort(function (a, b) {//a - b; 小到大//b - a; 大到小return a - b;})
console.log(arr);

6.向数组中 添加 后者删除 或者 替换元素:splice()

 let arr = ['a', 'b', 'c', 1, 2, 3];//index: 下标 必须 添加、删除元素的位置 可以使用负数 -1倒数第一个元素...//howmany: 数目 必须  要删除的元素的数量   如果设置为0 则不删除// ...item 可选 向数组中添加的元素console.log(arr.splice(2,1,'add1','add2'));console.log(arr);  

上述代码表示从数组中下标为2的位置删除一个元素,并添加两个新元素,再将删除的元素返回

7.合并数组:

方式1:concat
     let arr = [1, 2, 3];let arr2 = ['a', 'b', 'c'];let arr3 = ['A', 'B', 'C'];//将三个数组合并let res = arr.concat(arr2,arr3,'插入元素','插入元素')console.log(res);

方式2:数组展开语法(ES6特有)
     let arr = [1, 2, 3];let arr2 = ['a', 'b', 'c'];let arr3 = ['A', 'B', 'C'];console.log([...arr,...arr2,...arr3])console.log( arr);

8.数组元素拼接为字符串:

方式1:toString
  let arr = [1, 2, 3,'a','b','c']; console.log(arr.toString())

方式2:join方法:
    let arr = [1, 2, 3,'a','b','c']; console.log(arr.join("-"));

9.字符串拆分成数组:split()

let str='1-2-3-a-b-c';
console.log(str.split('-'));

10.裁切数组的元素:slice()

 let arr = ['a', 'b', 'c','d'];let result = arr.slice(1,3);console.log(result)console.log(...arr)

11.数组元素下标查询:indexof()/lastindexof()

let arr=[1,2,3,4,6,2,5];
//indexof查找首次出现的元素下标,查不到返回-1
console.log(arr.indexof(2));

        let arr=[1,2,3,4,6,2,5];//lastindexof查找最后一次出现的元素下标,查不到返回-1console.log(arr.lastIndexOf(2));

12.数组遍历,并对获取到的每一个数据进行操作:map()

let arr = [5, 68, 8, 6, 3, 2, 4, 5, 6, 8, 7, 1, 32, 3];// 遍历数组 每次循环时执行调用函数,根据回调函数的返回值//生成新的数组并返回let res = arr.map(function (item, index, array) {return item  * 2;})console.log(res)console.log(arr)

13.数组元素过滤:fliter()

 // 遍历数组 把满足条件的数据筛选出来 方法新的数组中let list = [2, 4, 58, 45, 4, 57, 8, 12, 475, 43, 1, 24, 54, 56]// item 元素 , index 下标, array 数组本身let res = list.filter(function (item, index, array) {return item >= 50;})console.log(res)

14.数组元素判断:

1.判断所有元素是否都满足特定条件:every()
 let list = [2, 4, 58, 45, 4, 57, 8, 12, 475, 43, 1, 24, 54, 56];//判断数组中所有的元素是否满足一个条件let result = list.every(function (item, index) {return item >= 50;})console.log(result)  

2.判断任意元素是否满足特定条件:some()
 let list = [2, 4, 58, 45, 4, 57, 8, 12, 475, 43, 1, 24, 54, 56];//判断数组中所有的元素是否满足一个条件let result = list.some(function (item, index) {return item >= 50;})console.log(result)  

3.判断数组中是否存在目标元素:includes();
 let list = [2, 4, 58, 45, 4, 57, 8, 12, 475, 43, 1, 24, 54, 56];
//判断数组中是否包含一个指定的值  如果存在 true  不存在falseconsole.log(list.includes(570))

15.数组元素累加和:reduce()/reduceRight()

  reduceRight表示从后往前累加:
     let list = [2, 4, 58, 45, 4, 57, 8, 12, 475, 43, 1, 24, 54, 56];/*** 求数组中所有的元素的累加和* sum = 0* prev:回调初始值 sum = 0*          可以设置初始化 如果没有设置初始值*           默认会将数组中的第一个元素 设置为初始值** item:每次循环的元素* index:每次循环的下标* array:当前数组* initVal:初始值*/let sum = list.reduce(function (prev, item, index, array) {console.log(prev, item, index, array)return prev + item;})console.log("和:",sum)

16.将对象转成数组:from()(不常用)

    let person = {0: '张三',1: '28',2: '男',length: 3}let list = Array.from(person);console.log(list)

说明:

  • 对象中必须有length属性,才可以进行转换;
    
  • 对象的属性名必须是数组下标,否则转换之后无法获取到数组元素
    

2.其他内置对象:

1.Date:时间相关:

   let date = new Date();console.log(date.getFullYear());console.log(date.getMonth()+1);console.log(date.getDate());console.log(date.getHours());console.log(date.getMinutes());console.log(date.getSeconds());console.log(date.getMilliseconds());

2.Math:数学相关:

    console.log(Math.PI)console.log(Math.abs(1));console.log(Math.floor(1.99)) //向下去整数console.log(Math.ceil(1.1))//向上去整数console.log(Math.round(1.5))//四舍五入// 产生 0-1 之间的随机数console.log(Math.ceil(Math.random() * 10)) 

相关函数汇总:

3.String:字符串:

1.获取长度:length();
 let str = "Hello,World!";console.log(str.length)
2.通过下标获取字符:charAt()
let str = "Hello,World!";console.log(str.charAt(0));
3.通过下标 获取 指定位置的字符的Unicode编码:charCodeAt();
let str = "Hello,World!";
console.log(str.charCodeAt(0));
4.字符串拼接:concat():
//参数是  string[]
console.log(str.concat('A','C','D')) 
5.查找目标字符的下标:indexof/lastindexof()
let str = "Hello,World!"; 
//返回第一个遇到的字符串的下标
console.log(str.indexOf("l"))
//返回最后一次遇到的字符下标
console.log(str.lastIndexOf("A"))
6.截取字符串:
1.slice():
    let str = "Hello,World!"; //截取字符串  包前不包后//第一个参数 :开始的下标位置//第二个参数可以为负数(-1表示 倒数第一个值)  如果不传 截取到末尾console.log(str.slice(1,4))console.log("原:",str);  
2.substring():
       let str = "Hello,World!";  //第一个参数 :开始的下标位置//注意 :第一个参数 如果大于第二个参数则会交换位置console.log(str.substring(4,1))console.log("原:",str);
3.substr():注意此方法已过期
     let str = "Hello,World!";  //第一个参数 截取开始的下标//第二个参数 截取的长度console.log(str.substr(1,4))console.log("原:",str);
7.检查字符串中是否包含目标字符串:includes()
         let str = "Hello,World!";  //检查字符串中是否包含 "," 包含 true 不包含 falseconsole.log(str.includes(","))
8.大小写转换:
1.转大写:toUpperCase():
 let str = "Hello,World!";  console.log(str.toUpperCase())
2.转小写:toLowercase():
 let str = "Hello,World!";console.log(str.toLowerCase())

3.正则表达式:

1.概述:

正则表达式指用于定义一些字符串的规则,可被用来检查一个字符串是否符合规则;

2.创建方式:

1.方式1:new

let reg  = new RegExp('正则表达式','匹配模式');匹配模式:i:忽略大小写g:全局匹配ig:忽略大小写,且全局匹配
    //创建正则表达式,判断字符串中是否存在‘ab’字符串(忽略大小写)let reg  = new RegExp('ab','i');let str = 'Abc';console.log(reg.test(str))  

方式2:字面量创建:

let reg=/正则表达式/匹配模式  匹配模式:i:忽略大小写g:全局匹配ig:忽略大小写,且全局匹配m:多行匹配
        let reg = /a/i;let str = 'Abc';console.log(reg.test(str))*/

3.常用匹配规则:

正则表达式中可以使用[]来匹配大范围的数字或字母,他们表示或者的关系,如下所示:

    • [a-z] 小写的 a-z之间的字符串
    • [A-Z] 大写的 A-Z之间的字符串
    • [A-z] 匹配的 A-z(大小写)之间的字符串
    • [0-9] 匹配数字
    • [^a-z] 除了小写的 a-z之间的字符串
    • [^A-Z] 除了大写的 A-Z之间的字符串
    • [^A-z] 匹配除了的 A-z(大小写)之间的字符串
    • [^0-9] 匹配除了数字

4.正则方法:

实际上就是字符串方法的参数改为正则表达式

          let str = "a1b2c3d5e6f8";//将字符串中分割字符串方法中的分割符参数改为正则表达式匹配的字符串// // let result = str.split(/[A-z]/);// let result = str.split(/[0-9]/);// console.log(result)
          // let str = "hello abc hello aec arc";// 搜索字符串  没有没有找到返回-1//只会返回第一个遇到的字符串// let result = str.search(/a[be]c/);// console.log(result)
       //提取符合正则表达式的内容// let str = "a1b2c3d5e6f8SENJHJ568";// // let result = str.match(/[a-z]/ig);// let result = str.match(/[A-z]/g);// console.log(result)
    //替换replace 第一个参数为 要替换的内容(可以是正则表达式)let str = "a1b2c3d5e6f8SENJHJ568";let result = str.replace(/[A-z]/g, "&");console.log(result)

5.正则量词:

1.语法规则:

  注意:**只匹配{}外第一个字符**,如果要匹配多个则要使用()将需要匹配的字符括起来
       {n} 正好出现n次{m,} 正好出现m次{m,n} 正好出现m-n次+ 最少出现一次 类似于 {1,}* 0个或者多个 {0,}? 0个或者1个 {0,1}

2.示例:

    let str = "b";// b 连续出现三次let reg = /b{3}/i;console.log(reg.test(str)) ;   

      let str = "ababab";ab 在字符串中连续出现3次let reg = /(ab){3}/i;console.log(reg.test(str)) ;

        let str = "bbbbbbb";//  b 连续最少出现三次  最多无上限let reg = /b{3,}/i;console.log(reg.test(str)) ;

        let str = "bbbbbbb";// /^开头   正则   $结尾/匹配模式// b 连续最少出现三次  最多5次let reg = /^b{3,5}$/i  ; console.log(reg.test(str)) ;

     let str = "bbbbbbb";//最少出现一次let reg = /^b+$/i;console.log(reg.test(str)) ;

     let str = "bbbbbbb";// 0个或者多个let reg = /^b*$/i;console.log(reg.test(str)) ; 

        let str = "bbbbbbb";//0 个或者一个let reg = /^b?$/i;console.log(reg.test(str)) 

6.其他匹配规则:

1.语法:

  \.: 表示匹配'.' \\:表示匹配'\'  \w:表示任意的字母 数字 下划线\W:表示除了任意的字母 数字 下划线\d:表示任意的数字\D:表示除了任意的数字\s:匹配空格\S:除了空格\b:单词边界\B:除了单词边界

2.正则匹配汇总:

3.示例:

    let reg = /^\D$/let str = "1";console.log(reg.test(str))        

         let str = " hello zs ";//替换开头和结尾的两个空格为*let reg = /^\s*|\s*$/gconsole.log(str.replace(reg, "*"))

          let str = "hello zs";let reg = /\bzs\b/console.log(reg.test(str))

     let emailStr = "asd1.57@aliyun.com.cn";let emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/console.log(emailReg.test(emailStr))  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!

作为全球领先的开源实时数据仓库&#xff0c; Apache Doris Github Stars 已超过 13.6k&#xff0c;并在 5000 余家中大型企业生产环境得到广泛应用&#xff0c;支撑业务核心场景&#xff0c;成为众多企业数据分析基础设施不可或缺的重要基座。过去&#xff0c;Apache Doris 用…

数字万用表与指针万用表使用方法及注意事项

在电子测量领域&#xff0c;万用表是极为常用的工具&#xff0c;数字万用表和指针万用表各具特点。熟练掌握它们的使用方法与注意事项&#xff0c;能确保测量的准确性与安全性。下面为您详细介绍&#xff1a; 一 、数字万用表按钮功能 > 进入及退出手动量程模式 每 按 […

深度学习Dropout实现

深度学习中的 Dropout 技术在代码层面上的实现通常非常直接。其核心思想是在训练过程中&#xff0c;对于网络中的每个神经元&#xff08;或者更精确地说&#xff0c;是每个神经元的输出&#xff09;&#xff0c;以一定的概率 p 随机将其输出置为 0。在反向传播时&#xff0c;这…

AtCoder AT_abc406_c [ABC406C] ~

前言 除了 A 题&#xff0c;唯一一道一遍过的题。 题目大意 我们定义满足以下所有条件的一个长度为 N N N 的序列 A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\dots,A_N) A(A1​,A2​,…,AN​) 为波浪序列&#xff1a; N ≥ 4 N\ge4 N≥4&#xff08;其实满足后面就必须满足这…

Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践

背景&#xff1a;为什么安全响应头至关重要&#xff1f; 在 Web 安全领域&#xff0c;响应头&#xff08;Response Headers&#xff09;是防御 XSS、点击劫持、跨域数据泄露等攻击的第一道防线。通过合理配置响应头&#xff0c;可强制浏览器遵循安全策略&#xff0c;限制恶意行…

如何停止终端呢?ctrl+c不管用,其他有什么方法呢?

如果你在终端中运行了一个程序&#xff08;比如 Python GUI tkinter 应用&#xff09;&#xff0c;按下 Ctrl C 没有作用&#xff0c;一般是因为该程序&#xff1a; 运行了主事件循环&#xff08;例如 tkinter.mainloop()&#xff09; 或 在子线程中运行&#xff0c;而 Ctrl …

深入解析 React 的 useEffect:从入门到实战

文章目录 前言一、为什么需要 useEffect&#xff1f;核心作用&#xff1a; 二、useEffect 的基础用法1. 基本语法2. 依赖项数组的作用 三、依赖项数组演示1. 空数组 []&#xff1a;2.无依赖项&#xff08;空&#xff09;3.有依赖项 四、清理副作用函数实战案例演示1. 清除定时器…

Ubuntu 更改 Nginx 版本

将 1.25 降为 1.18 先卸载干净 # 1. 完全卸载当前Nginx sudo apt purge nginx nginx-common nginx-core# 2. 清理残留配置 sudo apt autoremove sudo rm -rf /etc/apt/sources.list.d/nginx*.list修改仓库地址 # 添加仓库&#xff08;通用稳定版仓库&#xff09; codename$(…

如何在 Windows 10 或 11 中安装 PowerShellGet 模块?

PowerShell 是微软在其 Windows 操作系统上提供的强大脚本语言,可用于通过命令行界面自动化各种任务,适用于 Windows 桌面或服务器环境。而 PowerShellGet 是 PowerShell 中的一个模块,提供了用于从各种来源发现、安装、更新和发布模块的 cmdlet。 本文将介绍如何在 PowerS…

NBA足球赛事直播源码体育直播M33模板赛事源码

源码名称&#xff1a;体育直播赛事扁平自适应M33直播模板源码 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无需人工操作&#xff01; 演示地址&#xff1a;NBA足球赛事直播源码体育直播M33模板赛事…

【Python】魔法方法是真的魔法! (第二期)

还不清楚魔术方法&#xff1f; 可以看看本系列开篇&#xff1a;【Python】小子&#xff01;是魔术方法&#xff01;-CSDN博客 【Python】魔法方法是真的魔法&#xff01; &#xff08;第一期&#xff09;-CSDN博客 在 Python 中&#xff0c;如何自定义数据结构的比较逻辑&…

Qt 强大的窗口停靠浮动

1、左边&#xff1a; 示例代码&#xff1a; CDockManager::setConfigFlags(CDockManager::DefaultOpaqueConfig); CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true); dockManager new CDockManager(this); // Disabling the Internal Style S…

Linux进程异常退出排查指南

在 Linux 中&#xff0c;如果进程无法正常终止&#xff08;如 kill 命令无效&#xff09;或异常退出&#xff0c;可以按照以下步骤排查和解决&#xff1a; 1. 常规终止进程 尝试普通终止&#xff08;SIGTERM&#xff09; kill PID # 发送 SIGTERM 信号&#xff08;…

使用tensorRT10部署低光照补偿模型

1.低光照补偿模型的简单介绍 作者介绍一种Zero-Reference Deep Curve Estimation (Zero-DCE)的方法用于在没有参考图像的情况下增强低光照图像的效果。 具体来说&#xff0c;它将低光照图像增强问题转化为通过深度网络进行图像特定曲线估计的任务。训练了一个轻量级的深度网络…

SLAM定位常用地图对比示例

序号 地图类型 概述 1 格栅地图 将现实环境栅格化,每一个栅格用 0 和 1 分别表示空闲和占据状态,初始化为未知状态 0.5 2 特征地图 以点、线、面等几何特征来描绘周围环境,将采集的信息进行筛选和提取得到关键几何特征 3 拓扑地图 将重要部分抽象为地图,使用简单的图形表示…

【图像生成1】Latent Diffusion Models 论文学习笔记

一、背景 本文主要记录一下使用 LDMs 之前&#xff0c;学习 LDMs 的过程。 二、论文解读 Paper&#xff1a;[2112.10752] High-Resolution Image Synthesis with Latent Diffusion Models 1. 总体描述 LDMs 将传统 DMs 在高维图像像素空间&#xff08;Pixel Space&#x…

通信安全堡垒:profinet转ethernet ip主网关提升冶炼安全与连接

作为钢铁冶炼生产线的安全检查员&#xff0c;我在此提交关于使用profinet转ethernetip网关前后对生产线连接及安全影响的检查报告。 使用profinet转ethernetip网关前的情况&#xff1a; 在未使用profinet转ethernetip网关之前&#xff0c;我们的EtherNet/IP测温仪和流量计与PR…

TIFS2024 | CRFA | 基于关键区域特征攻击提升对抗样本迁移性

Improving Transferability of Adversarial Samples via Critical Region-Oriented Feature-Level Attack 摘要-Abstract引言-Introduction相关工作-Related Work提出的方法-Proposed Method问题分析-Problem Analysis扰动注意力感知加权-Perturbation Attention-Aware Weighti…

day 20 奇异值SVD分解

一、什么是奇异值 二、核心思想&#xff1a; 三、奇异值的主要应用 1、降维&#xff1a; 2、数据压缩&#xff1a; 原理&#xff1a;图像可以表示为一个矩阵&#xff0c;矩阵的元素对应图像的像素值。对这个图像矩阵进行 SVD 分解后&#xff0c;小的奇异值对图像的主要结构贡…

符合Python风格的对象(对象表示形式)

对象表示形式 每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方 式。Python 提供了两种方式。 repr()   以便于开发者理解的方式返回对象的字符串表示形式。str()   以便于用户理解的方式返回对象的字符串表示形式。 正如你所知&#xff0c;我们要实现_…