JS数组操作基础

1、JS数组常用方法

2、函数使用实例

2.1 concat()

功能:可以合并一个或多个数组,返回合并数组之后的数据,不会改变原来的数组

var str1 = [12,3,"hello"];
var str2 = ["world",123];
console.log(str1,concat(str2));

2.2 join()

功能:将数组转为字符串并返回转化的字符串数据,不会改变原来的数组

注意:( )中用双引号包括自己想用的分隔符,默认为逗号

var str1 = [12,3,"hello"];
var str2 = ["world",123];
console.log(str1);
console.log(str1.join("-"));

运行结果:
[ 12, 3, 'hello' ]
12-3-hello

2.3 pop()

功能:删除数组的最后一位,并且返回删除的数据,会改变原来的数组

var str1 = [12,3,"hello"];
console.log(str1);
console.log(str1.pop());
console.log(str1);

运行结果:
[ 12, 3, 'hello' ]
hello
[ 12, 3 ]

2.4 shift()

功能:删除数组的第一位数据,并且返回新数组的长度,会改变原来的数组

var str1 = [12,3,"hello"];
console.log(str1);
console.log(str1.shift());
console.log(str1);

运行结果:
[ 12, 3, 'hello' ]
12
[ 3, 'hello' ]

2.5 unshift()

功能:在数组的首位新增一个或多数据,并且返回新数组的长度,会改变原来的数组
注意:unshift()方法返回的数据是新数组的长度,它增加的数据可以是一个也可以是多个,可以理解为增加一连串的数据,

var str1 = [3,"hello"];
console.log(str1);
console.log(str1.unshift(2));
console.log(str1.unshift(1,0));
console.log(str1);

运行结果:
[ 3, 'hello' ]
3
5
[ 1, 0, 2, 3, 'hello' ]

2.6 push()

功能:在数组的最后一位新增一个或多个数据,并且返回新数组的长度,会改变原来的数组
注意:push()方法返回的是数据是新数组的长度,它增加的数据可以是一个也可以是多个,可以理解为增加一连串的数据

var str1 = [3,"hello"];
console.log(str1);
console.log(str1.push(2));
console.log(str1.push(1,0));
console.log(str1);

运行结果:
[ 3, 'hello' ]
3
5
[ 3, 'hello', 2, 1, 0 ]

2.7 reverse()

功能:将数组的数据进行反转,并且返回反转后的数组,会改变原数组

var str1 = [1,2,3,"hello"];
console.log(str1);
console.log(str1.reverse());
console.log(str1);

运行结果:
[ 1, 2, 3, 'hello' ]
[ 'hello', 3, 2, 1 ]
[ 'hello', 3, 2, 1 ]

2.8 sort()

功能:对数组内的数据进行排序(默认为升序),并且返回排过序的新数组,会改变原来的数组

注意:排序是针对字符的排序,先使用数组的toString()方法转为字符串,再逐位比较,3是大于12的,因为首位3>1

var str1 = [123,233333,323,"hello"];
console.log(str1);
console.log(str1.sort());
console.log(str1);

运行结果:
[ 123, 233333, 323, 'hello' ]
[ 123, 233333, 323, 'hello' ]
[ 123, 233333, 323, 'hello' ]

2.9 silce()

功能:截取指定位置的数组,并且返回截取的数组,不会改变原数组
参数:slice(startIndex,endIndex)
注意:该方法接收两个参数sice(start,end),strat为必选,表示从第几位开始;end为可选,表示到第几位结束(不包含end位),省略表示到最后一位;start和end都可以为负数,负数时表示从最后一位开始算起。

var str1 = [123,233333,323,"hello"];
console.log(str1);
console.log(str1.slice(1,2));
console.log(str1.slice(-3,-1));

运行结果:
[ 123, 233333, 323, 'hello' ]
[ 233333 ]
[ 233333, 323 ]

2.10 splice()

功能:向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素。
参数:splice(start,num,data1,data2....); 所有参数全部可选。

var str1 = [123,233333,323,"hello"];
console.log(str1);
console.log(str1.splice(1,2,"a","b"));
console.log(str1);
console.log(str1.splice(1,2));
console.log(str1);

运行结果:
[ 123, 233333, 323, 'hello' ]
[ 233333, 323 ]
[ 123, 'a', 'b', 'hello' ]
[ 'a', 'b' ]
[ 123, 'hello' ]

2.11 toString()

功能:将数组转换成字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。不会改变原数组

2.12 valueOf()

功能:返回数组的原始值(一般情况下其实就是数组自身),一般由js在后台调用,并不显式的出现在代码中

var str1 = [123,233333,323,"hello"];
console.log(str1.valueOf());
console.log(str1);
//为了证明返回的是数组自身
console.log(str1.valueOf() == str1);

运行结果:
[ 123, 233333, 323, 'hello' ]
[ 123, 233333, 323, 'hello' ]
true

2.13 IndexOf()

功能:根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1,找到了指定的数据返回该数据的索引
参数:indexOf(value,start);value为要查询的数据;start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1
注意:如果找到该数据,立即返回该数据的索引,不再往后继续查找

2.14 lastIndexOf()

功能:根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1,找到了指定的数据返回该数据的索引
参数:indexOf(value,start);value为要查询的数据;start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1

2.15 forEach()

功能:ES5新增的方法,用来遍历数组,没有返回值
参数:forEach(callback);calback默认有三个参数,分别为value(遍历到的数组的数据),index(对应的索引),self(数组自身)。

var arr =["Tom","Jack","Lucy","Lily","May"];
var a= arr.forEach(function(value,index,self){
console.log(value +"--"+ index +"--"+(arr === self));
})

运行结果:
Tom--0--true
Jack--1--true
Lucy--2--true
Lily--3--true
May--4--true

2.16 map()

功能:

  1. 同forEach功能;
  2. map的回调函数会将执行结果返回,最后map将所有回调函数的返回值组成新数组返回。

参数:map(callback);callback默认有三个参数,分别为value,index,self,跟上面的forEach()的参数一样

 //功能1:同forEach
var arr = ["Tom","Jack","Lucy","Lily","May"];2
var a= arr.map(function(value,index,self){
    console.log(value +"__"+ index +"_-"+(arr === self))
})
//功能2:每次回调函数的返回值被map组成新数组返回
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a= arr.map(function(value,index,self){
    return "hi:"+value;
})
console.log(a);
console.log(arr);

运行结果:
Tom__0_-true
Jack__1_-true
Lucy__2_-true
Lily__3_-true
May__4_-true
[ 'hi:Tom', 'hi:Jack', 'hi:Lucy', 'hi:Lily', 'hi:May' ]
[ 'Tom', 'Jack', 'Lucy', 'Lily', 'May' ]

2.17 filter()

功能:

  1. 同forEach功能;
  2. filter的回调函数需要返回布尔值,当为true时,将本次数组的数据返回给filter,最后filter将所有回调函数的返回值组成新数组返回(此功能可理解为“过滤”)。

参数:filter(callback);callback默认有三个参数,分别为value,index,self。

//功能1:同forEach
var arr =["Tom","Jack","Lucy","Lily","May"];
var a= arr.filter(function(value,index,self){
console.log(value +"__"+ index +"_-"+(arr === self))
5})
//功能2:当回调函数的返回值为true时,本次的数组值返回给fi1ter,被filter组成新数组返回
var arr =["Tom","Jack","Lucy","Lily","May"];
var a= arr.filter(function(value,index,self){
    return value.length>3;
})
console.log(a);
console.log(arr);

运行结果:
Tom__0_-true
Jack__1_-true
Lucy__2_-true
Lily__3_-true
May__4_-true
[ 'Jack', 'Lucy', 'Lily' ]
[ 'Tom', 'Jack', 'Lucy', 'Lily', 'May' ]

2.18 every()

功能:判断数组中每一项是否都满足条件,只有所有项都满足条件,才会返回true。

参数:every()接收一个回调函数作为参数,这个回调函数需要有返回值,every(callback);callback默认有三个参数,分别为value,index,self。

功能1:当回调函数的返回值为true时,类似于forEach的功能,遍历所有;如果为false,那么停止执行,后面的数据不再遍历,停在第一个返回false的位置

功能2:当每个回调函数的返回值都为true时,every的返回值为true,只要有一个回调函数的返回值为false,every的返回值都为false

var arr = ["Tom" ,"abc" ,"Jack","Lucy","Lily" ,"may"];2
var a= arr.every(function(value,index,self){
    console.log(value +"--"+index +"--"+(arr == self))
})
console.log("-----------")
var arr =["Tom","abc","jack","Lucy","Lily","May"];
var a= arr.every(function(value,index,self){
    console.log(value +"--"+ index +"--"+(arr == self))
    return value.length < 4;
})
console.log("-----------")
var arr = ["Tom","abc" ,"jack","Lucy","Lily","May"];
var a= arr.every(function(value,index,self){
    return value.length>3;
})
console.log(a);
console.log("-----------")
var arr =["Tom","abc","Jack","Lucy","Lily","May"];
var a= arr.every(function(value,index,self){
    return value.length>2;
})
console.log(a);

运行结果:
Tom--0--true
-----------
Tom--0--true
abc--1--true
jack--2--true
-----------
false
-----------
true

2.19 some()

功能:判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

参数:some()接收一个回调函数作为参数,这个回调函数需要有返回值,some(calback);callback默认有三个参数,分别为value,index,self。

功能1:因为要判断数组中的每一项,只要有一个回调函数返回true,some都会返回true,所以与every正好相反,当遇到一个回调函数的返回值为true时,可以确定结果,那么停止执行,后面都数据不再遍历,停在第一个返回true的位置;当回调函数的返回值为false时,需要继续向后执行,到最后才能确定结果,所以会遍历所有数据,实现类似于forEach的功能,遍历所有。

功能2:与every相反,只要有一个回调函数的返回值都为true,some的返回值为true,所有回调函数的返回值为false,some的返回值才为false

2.20 reduce()

功能:从数组的第一项开始,逐个遍历到最后,选代数组的所有项,然后构建一个最终返回的值

参数:reduce()接收一个或两个参数:第一个是回调函数,表示在数组的每一项上调用的函数;第二个参数(可选的)作为归并的初始值,被回调函数第一次执行时的第一个参数接收。reduce(callback,initial);callback默认有四个参数,分别为prev,now,index,self。callback返回的任何值都会作为下一次执行的第一个参数。如果initial参数被省略,那么第一次迭代发生在数组的第二项上,因此callback的第一个参数是数组的第一项,第二个参数就是数组的第二项。

2.21 reduceRight()

功能:与reduce类似,从数组的最后一项开始,向前逐个遍历到第一位,迭代数组的所有项,然后构建一个最终返回的值。
参数:同reduce。demo:同reduce

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

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

相关文章

leetcode--560和为k的子数组

问题 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [1,2…

IP协议,网络层

一、IP协议报文 在网络层最主要的协议是IP协议&#xff0c;网络层的主要任务是进行&#xff1a;1.地址管理 2.路由选择 地址管理&#xff1a;使用一套地址体系&#xff0c;描述互联网中每个设备所处的位置。 IP地址有两个版本&#xff0c;1.IPV4 2.IPV6 &#xff0c;IP…

基于STM32F103ZE平台分析FreeRtos(九)——协程

目录 一、协程简介 二、协程工作机制 2.1 协程控制块结构 2.2 协程管理方式 2.3 协程调度方式 2.4 协程通信机制 三、协程状态及状态切换 3.1 协程状态 3.2 状态切换 四、协程创建 五、协程调度分析 5.1 源码分析 5.2 逻辑图分析 六、协程通信 6.1 协程发送消息…

Edge的使用心得和深度探索-Sider: ChatGPT 侧边栏

作为一款备受欢迎的网络浏览器&#xff0c;Microsoft Edge在用户体验和功能方面都有着诸多优势。在长期的使用中&#xff0c;我总结出了三条使用心得&#xff0c;同时也发现了三个能够极大提高效率的功能。让我们一起深度探索Edge的潜力吧&#xff01; 使用心得&#xff1a; 界…

Android 10.0 Launcher3定制folder文件夹2x2布局之一xml文件配置和解析相关属性

1.前言 在10.0的系统rom产品定制化开发中,在对Launcher3的folder文件夹功能定制中,要求folder文件夹跨行显示,就是 2x2布局显示,默认的都是占1格的,现在要求占4格显示,系统默认是不支持显示4格的,所以接下来需要分析相关的 功能,然后来实现这个功能 2.Launcher3定制fo…

C# WCF服务(由于内部错误,服务器无法处理该请求。)

由于内部错误&#xff0c;服务器无法处理该请求。有关该错误的详细信息&#xff0c;请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端&#xff0c;或打开对每个 Microsoft .NET …

Windows+Linux的虚拟串口工具

文章目录 1.Windows虚拟串口工具1.1 安装教程1.2 使用方法 2.Linux系统虚拟串口工具2.1 socat安装2.2 开启虚拟串口2.3 测试2.3.1 命令测试2.3.2 Cutecom工具测试 2.4 关闭虚拟串口 3.参考资料 1.Windows虚拟串口工具 下载地址&#xff1a;https://www.downxia.com/downinfo/4…

CCF-Csp算法能力认证, 202303-1重复局面(C++)含解析

前言 推荐书目&#xff0c;在这里推荐那一本《算法笔记》&#xff08;胡明&#xff09;&#xff0c;需要PDF的话&#xff0c;链接如下 「链接&#xff1a;https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd6vdq# 提取码&#xff1a;6vdq”复制这段内容后打开手机迅雷…

解决springboot项目的网站静态页面显示不全问题

在通过springboot搭建项目时&#xff0c;为了能够访问静态的前端页面&#xff0c;我们考虑到访问的优先级问题&#xff0c;通常选择将资源放在recourses/static的目录下&#xff0c;如下&#xff1a; 这时可能会出现类似于下面这种图片无法加载、没有按照指定位置显示的情况&am…

Python-100-Days: Day09 Object-oriented programming(OOP) Upgrade

1.property装饰器 之前有讨论过&#xff0c; Python中属性和方法访问权限的问题&#xff0c;不建议将属性设置为私有的&#xff0c;倘若直接将属性暴露给外界也是存在问题的。例如&#xff0c;我们没有办法检查赋给属性的值是否有效。之前的建议是将属性命名以单下划线开头&am…

【线性代数】俗说矩阵听课笔记

基础解系的概念 31线性相关&#xff0c;线性无关&#xff0c;拓展与证明 n个m维向量在n<m时可能线性相关也可能线性无关&#xff0c;线性无关时可以构成某个m维空间的一组基。m不小于n时&#xff0c;秩小于n则线性相关。 n个m维向量在n>m时可一定线性相关。低维向量一定…

microsoft的azure语音,开发环境运行正常,发布到centos7线上服务器之后,无法运行

最近在做AI语音对话的功能&#xff0c;用到了azure的语音语音服务&#xff0c;开发的时候还算顺利&#xff0c;部署到线上后&#xff0c;发现在正式服上无法完成语音转文本的操作&#xff0c;提示&#xff1a; org.springframework.web.util.NestedServletException: Handler d…

2024-05-08 问AI: 在深度学习中,介绍一下RMSProp 优化器

文心一言 在深度学习中&#xff0c;RMSProp&#xff08;Root Mean Square Propagation&#xff09;优化器是一种常用的优化算法&#xff0c;主要用于神经网络训练的梯度下降算法的变体。它是对Adagrad优化器的一种改进&#xff0c;旨在解决Adagrad中学习率过快下降的问题。 R…

HTML学习|初识表单post和get提交、文本框和单选框、按钮、多选框和下拉框、文本域和文件域、搜索框滑块和简单验证、表单的应用、表单初级验证

初识表单post和get提交 form标签是表单&#xff0c;method控制表单提交方式&#xff0c;get方式&#xff0c;表单填写的参数能够在跳转的url地址中看到&#xff0c;post方式是看不到的&#xff0c;action是向何处跳转表单数据 input标签&#xff0c;且typetext&#xff0c;是…

恋爱中的Java多线程:从单身到共舞的浪漫指南(一)

引言&#xff1a;孤独的线程&#xff0c;寂寞的码农 开篇小剧场&#xff1a; ​ 深夜&#xff0c;孤独的程序猿凯叔接到新任务&#xff1a;优化程序性能&#xff0c;探索多线程。这一任务成了他跳出孤独、寻求生活并行美好的契机。从简单的Thread类到复杂的线程池管理&#xff…

基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................. % figure; % subplot(121);…

GitLab使用记录

GitLab 文章目录 1. 常用命令1.1 配置邮箱 用户名1.2 查看配置1.3 基本语法 2. 连接gitlab3. 直接拉去项目 1. 常用命令 1.1 配置邮箱 用户名 git config --global user.name ShangzheChen git config --global user.email 735511377qq.com1.2 查看配置 cat ~/.gitconfig这…

SpringCloud微服务之Eureka、Ribbon、Nacos详解

SpringCloud微服务之Eureka、Ribbon、Nacos详解 1、认识微服务1.1、单体架构1.2、分布式架构1.3、微服务1.4、SpringCloud 2、服务拆分与远程调用2.1、服务拆分的原则2.2、服务拆分示例2.2、提供者与消费者 3、Eureka注册中心3.1、Eureka的结构和作用3.2、搭建eureka-server3.2…

图像处理:图像噪声添加

文章目录 前言一、高斯噪声二、椒盐噪声三、泊松噪声四、斑点噪声五、指数噪声六、均匀噪声总结 前言 本文主要介绍几种添加图像噪声的方法&#xff0c;用于数据增强等操作。 以下图为例。 一、高斯噪声 高斯噪声就是给图片添加一个服从高斯分布的噪声&#xff0c;可以通过调…

Java | Leetcode Java题解之第77题组合

题目&#xff1a; 题解&#xff1a; class Solution {List<Integer> temp new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();public List<List<Integer>> combine(int n, int k) {List&l…
最新文章