web学习笔记(十四)

目录

1.数组

1.1数组的概念

1.2数组的创建

1.3数组的索引和获取

1.4数组的遍历、长度和检测数据类型

1.5数组的操作

  1.6深拷贝和浅拷贝

2.数组常用的方法(重点): 

2.1常用方法汇总

2.2 补充:


1.数组

1.1数组的概念

        数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型(字符串,数字,布尔值等)的元素。数组是一种将一组数据存储在单个变量名下的存储方式。

1.2数组的创建

(1)利用 new 创建数组

         var 数组名 = new Array();// 创建一个新的空数组 

(2)利用数组字面量创建数组

  • 1. 使用数组字面量方式创建空的数组 var 数组名 = [];
  • 2. 使用数组字面量方式创建带初始值的数组 var 数组名 = ['小白','小黑','大黄','瑞奇'];
  • 数组的字面量是方括号 [ ]
  • 声明数组并赋值称为数组的初始化
  • 这种字面量方式也是我们以后最多使用

1.3数组的索引和获取

(1)索引 (下标) :用来访问数组元素的序号(数组下标从 0 开始),因此数组中的个数要比索引数大一。 

(2)数组的获取:数组可以通过索引来访问、设置、修改对应的数组元素,我们可以通过“数组名[索引]”的形式来获取数组中的

// 定义数组
var arrStus = [1,2,3];
// 获取数组中的第2个元素
alert(arrStus[1]);

1.4数组的遍历、长度和检测数据类型

       (1)数组的遍历:可以通过for循环把数组中的每个元素从头到尾都访问一次。

var arr = ['red','green', 'blue']; 
for(var i = 0; i < arr.length; i++){
console.log(arrStus[i]);
}

         (2)数组的长度:可以使用“数组名.length”可以访问数组元素的数量(数组长度),当我们数组里面的元素个数发生了变化,这个length 属性跟着一起变化。

var arrStus = [1,2,3]; 
alert(arrStus.length);	// 3

           (3)检测数组的数据类型:可以通过运算符 instanceof来检测数组的数据类型,结果返回一个布尔值。

1.5数组的操作

        (1)增

             格式:数组名[索引号]=值;  eg:  arr[0]=12;

             可以不按照顺序添加,没有数据的索引的位置表现为空属性(empty)

            (2)  改

                格式: 数组名[索引号]=新值;   eg:  arr[0]=22;

          (3)删    delete 数组名[索引号]  不是很好用,有隐藏问题,只能清除数据,但对应索引号位置还在。

             (4)  查

                  格式: console.log(数组名[索引号]);

  1.6深拷贝和浅拷贝

  1. 浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用,拷贝的是引用地址,如果修改任意一个数据,两个数组中数据同步修改。

  2. 深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中,拷贝堆内存中数据,修改其中一个数组中的元素,另一个不会同步修改。。因此,新对象和原对象没有任何关联。

  3. 区别:浅拷贝,修改原数组或新数组,两个数组的值会同步修改 ,深拷贝,修改原数组或新数组,两个数组的值不会同步修改

  4. 本质区别:浅拷贝修改了值,不会新建一个内存地址的对象, 深拷贝 如果修改了值,及时复制了一份新的内存地址,原始地址的值不会被改变

2.数组常用的方法(重点): 

2.1常用方法汇总

 名字  

用法

是否修改原数组

push(ele1,ele2,...)

 向数组的末尾添加一个·或更多元素  ,

 并返回新的长度 

  修改

pop()

 删除数组中最后一个元素,

  并返回删除的元素  

  修改

unshift(ele1,ele2,...)

向数组的开头添加一个或者更多元素,

并返回新的长度

  修改

shiift()  

删除并返回数组的第一个元素

  修改

splice()

 从数组中添加或删除元素,

 返回被删除的元素,

  修改

concat()

 连接两个或更多的数组,

并返回结果 (会生成一个新数组)

不修改

slice(start,end)

 选取数组中的一部分,          

  并返回新数组        

不修改

join()  

 把数组中所有元素放入一个字符串        

不修改
indexof()搜索数组中的元素,并返回它所在的位置。不修改
lastIndexof()搜索数组中的元素,并返回它最后出现的位置。不修改
includes()判断一个数组是否包含一个指定的值,返回值是一个布尔值。不修改
Array.isArray(参数)判断对象是否为数组,返回值是一个布尔值。不修改
sort()对数组的元素进行排序(本质是一个冒泡方法)。修改
reverse()反转数组的元素顺序。修改
arr.forEach(回调函数)数组每个元素都执行一次回调函数。不修改
map()通过指定函数处理数组的每个元素,并返回处理后的数组。不修改
filter()检测数值元素,并返回符合条件所有元素的数组。不修改
findIndex返回符合传入测试(函数)条件的数组元素索引不修改

2.2 补充:

  •  array.splice(索引号,删几个,添加新的元素,添加新的元素)  索引号必须写,剩下的可写可不写(如果没有写删除几个,将会从所选位置删到最后,添加的新元素将会添加到当前索引号内容的前面) 
  • concat()可以对一维数组实现深拷贝,复杂的数组还是浅拷贝 
  • slice(start,end)  里面的两个参数,可正可负,可有可无 形成一个左闭右开的区间,当只有start时,区间为[start,arr.length);     如果是负值,从后向前数 -1如果两个参数都不要,相当于对元素进行了一次拷贝(深拷贝) 
  • indexof(ele,start)返回元素第一次出现的位置,不存在则返回-1,包含两个参数(元素,起始位置)
  • sort()默认按照asc码来排序 
  • arr.sort(function(a,b){   return a-b});表示按照升序的方式来对数组进行排序。
  • arr.sort(function(a,b){   return b-a});表示按照降序的方式来对数组进行排序。
  • 回调函数就是没有函数名的元素 function(item,index ){           }
  • map()当没有返回值时,相当于forEach,有返回值时数组中每个元素做了处理返回
  • findIndex()的效率比indexof()要高

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

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

相关文章

【STM32】HAL库的STOP低功耗模式UART串口唤醒BUG,第一个接收字节出错的问题(尚未解决,疑难杂症)

【STM32】HAL库的STOP低功耗模式UART串口唤醒BUG&#xff0c;第一个接收字节出错的问题&#xff08;尚未解决&#xff0c;疑难杂症&#xff09; 文章目录 BUG复现调试代码推测原因及改进方案尝试中断时钟供电外设唤醒方式校验码硬件问题 切换到STOP0模式尝试最终结论和猜想附录…

[SpringBoot]如何在一个普通类中获取一个Bean

最近在项目中出现了一个这种情况&#xff1a;我一顿操作猛如虎的写了好几个设计模式&#xff0c;然后在设计模式中的类中想将数据插入数据库&#xff0c;因此调用Mapper持久层&#xff0c;但是数据怎么都写不进去&#xff0c;在我一顿操作猛如虎的查找下&#xff0c;发现在普通…

在WindowsServer2012中部署war项目

目录 前言 一.jdk安装 二.Tomact安装 三.MySQL安装 ​编辑​编辑​编辑​编辑​编辑​编辑​编辑 四.开放端口号 MySQL开放端口号 Tomact开放端口号 ​编辑 五.项目部署 1.将war放置在tomact中 2.配置项目sql脚本 3.最终效果 前言 安装Java开发工具包&#xff08…

【libpcap】获取报文pcap的ns级别的时间戳

1.安装libpcap 首先&#xff0c;下载最新的 libpcap 源代码。你可以从 tcpdump.org 获取最新版本 1 解压下载的libpcap tar -zxvf libpcap-version.tar.gz 2 进入解压目录进行安装 cd libpcap-version ./configure make sudo make install2 解析报文时间戳 #include <pca…

力扣 2707.字符串中的额外字符(动态规划)

力扣 2707.字符串中的额外字符 动态规划 f[0] 0; s字符串长度为n&#xff0c;求f[n] f[n] ((f[n - 1] 1) < f[j : n]) ? (f[n - 1] 1) : f[j : n]; (其中 j < n) 其中f[j : n]为字符串第j位到第n位&#xff0c;这里需要满足f[j : n]为字典中所出现的字符串 因此&…

Linux进阶命令使用

在 Linux 中&#xff0c;除了常用的基础命令&#xff0c;有一系列进阶命令可以帮助用户更有效地管理系统和执行复杂的任务。以下是一些常见的 Linux 进阶命令及其用法&#xff1a; 文本处理 grep&#xff1a;搜索文本并打印匹配的行。 grep pattern filenameawk&#xff1a;用…

Fancy

专门记录一点思维题。 1. 反转与双端队列&#xff1a;LC 2810 故障键盘 这题是个easy&#xff0c;但用StringBuilder强行模拟反转就没意思了。 可以这么想&#xff0c;当打出一个i&#xff0c;代表一个控制信号&#xff0c;反转。 一开始我们向队列尾部&#xff08;屏幕上的…

SpringMVC 学习博客记录

文章目录 Servlet请求转发和请求包含RequestDispatcher HandlerInterceptor组件实际运用场景 HandlerMapping&RequestMappingInfo(HandlerMapping)HandlerExecutionChainHandlerAdapter源码学习知识点博客记录 Servlet请求转发和请求包含 RequestDispatcher Request#getR…

文件上传进阶绕过技巧(一)和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战&#xff1a;upl…

数据库的数据会存到文件中

数据库的数据会存到文件中。文件就是操作系统对磁盘block的映射。 文件/块在开头有元数据&#xff0c;包含eof的位置&#xff0c;recode的数量&#xff0c;每个recode的长度。 聚集索引和数据放在一起&#xff0c;索引就是数据主键。 而非聚集索引在另一个地址中单独存储&…

从零学Java 泛型

Java 泛型 文章目录 Java 泛型1 什么是泛型?2 泛型类3 泛型接口4 泛型方法5 泛型集合 Collection 工具类 1 什么是泛型? Java泛型是JDK1.5中引入的一个新特性&#xff0c;其本质是参数化类型&#xff0c;把类型作为参数传递。 常见形式有泛型类、泛型接口、泛型方法。 语法…

SPI接口协议

SPI接口协议 SPI(Serial Peripheral Interface)是由Motorola公司定义的接口协议标准&#xff0c;串行外设接口(SPI)是微控制器和外围IC&#xff08;如传感器、 ADC、 DAC、移位寄存器、 SRAM等&#xff09;之间使用最广泛的接口之一。SPI是一种同步、全双工、主从式接口&#x…

你了解计算机网络的发展历史吗?

1.什么是计算机网络 计算机网络是指将一群具有独立功能的计算机通过通信设备以及传输媒体被互联起来的&#xff0c;在通信软件的支持下&#xff0c;实现计算机间资源共享、信息交换或协同工作的系统。计算机网络是计算机技术与通信技术紧密结合的产物&#xff0c;两者的迅速发展…

Lua调用dll(C#)的代码示例

以下是一个简单的示例&#xff0c;演示如何在Lua中调用.NET Framework的DLL。请注意&#xff0c;这个示例假设你已经安装了Lua和.NET Framework&#xff0c;并且有一个名为"MyDll.dll"的.NET DLL。 首先&#xff0c;创建一个名为"MyDll.cs"的C#文件&#…

11853 - Paintball (UVA)

题目链接如下&#xff1a; Online Judge 这道题挺可惜&#xff0c;我思路其实就差了一点点没想出来&#xff0c;还是看了uva 11853 paintball&#xff08;好题&#xff09;——yhx_yhx. live-CSDN博客 这里的文字部分才最终写出来。 dfs版本代码如下&#xff1a; #include …

C++系列十五:字符串

字符串 1 、创建和初始化C字符串2. C字符串的常用操作3. C字符串处理函数4. C字符串在实际开发中的应用 C中的字符串是由字符组成的序列。字符串常用于处理文本数据&#xff0c;例如用户输入、文件内容等。C标准库提供了一个名为std::string的类&#xff0c;用于表示和处理字符…

递归——简单粗暴的问题解决方式

相信很多人在刚接触算法时都在递归上栽过跟头&#xff08;包括我&#xff09;&#xff0c;但是在掌握了这项技能后会有种豁然开朗的感觉&#xff01; 我用我自己&#xff01; 怎么会有这么优雅而又简单粗暴的解决问题的方法&#xff01; \color{red}{怎么会有这么优雅而又简单…

爬虫之牛刀小试(三):爬取中国天气网全国天气

天气网&#xff1a; import requests from bs4 import BeautifulSoup import time from pyecharts.charts import Bar from pyecharts import options as optsurl_hb http://www.weather.com.cn/textFC/hb.shtml url_db http://www.weather.com.cn/textFC/db.shtml url_hd …

Java SE入门及基础(6)

运算符 1.常规运算符&#xff08; - * /&#xff09; 示例 /** * 运算符操作 - * / */ public class Example2 { public static void main ( String [] args ) { //变量在使用之前必须完成初始化操作。换言之就是给变量赋值。 // int a, b; // a 5; // b …

跨境电商之店群模式:Shopee店群是什么?卖家如何做好店群?

今天跟大家谈一谈越来越火爆的店群模式&#xff0c;现在大部分做跨境电商的卖家都会建立自己的店群&#xff0c;其中很多做 Shopee的卖家时常会听到一个名词“ Shopee 店群模式”&#xff0c;但很多人都不知道怎么去做&#xff0c;或者在犹豫要不要做&#xff0c;所以东哥我会从…