js数组常用方法

js数组常用方法

join

Array.join() 方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。可以指定一个可选的字符串在生成的字符串中来分隔数组的各个元素。如果不指定分隔符,默认使用逗号。示例:

var a = [1,2,3]
console.log(a.join()) //1,2,3
console.log(a.join(" ")) //1 2 3
console.log(a.join(""))//123

reverse

Array.reverse() 方法将数组中的元素颠倒顺序,返回逆序的数组。它采取了替换;即在原先的数组中重新排列它们。示例:

var a = [1,2,3]
console.log(a.reverse().join()) //3,2,1

sort

Array.sort() 方法将数组中的元素排序并返回排序后的数组。当不带参数调用 sort() 时,数组元素以字母表顺序排序(如有必要将临时转化为字符串进行比较):

var a = ['d','b','c']
console.log(a.sort().join()) //b,c,d

如果数组包含 undefined 元素,将会被安排到数组的尾部。
sort 方法可以传一个比较函数用于非字母排序,该函数接收两个参数,假设第一个参数应该在前,比较函数应该返回一个小于 0 的数值,反之,第一个参数在后,返回一个大于 0 的数值,示例:

var a = [3,26,5,2]
a.sort(function (a,b) {if (a<b) {return -1} else {return 1}
})
console.log(a.join()) //2,3,5,26

concat

Array.concat() 方法创建并返回一个新数组,它的元素包括调用 concat() 的原始数组的元素和 concat() 的每个参数。如果参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身,concat() 不会递归扁平化数组,也不会修改调用数组。示例:

var a = [1,2,3]
console.log(a.concat(4, 5)) // [ 1, 2, 3, 4, 5 ]
console.log(a.concat([4, 5])) // [ 1, 2, 3, 4, 5 ]

slice

Array.slice() 方法返回指定数组的一个片段或子数组。它的两个参数分别指定了片段的开始和结束的位置。返回的数组包含第一个参数位置但不含第二个参数位置之间的元素,如果只有一个参数,则返回开始位置到数组结尾的所有元素。如参数中出现负数,表示相对于数组中最后一个元素的位置。示例:

var a = [1,2,3,4]
console.log(a.slice(0,2)) //[1, 2]
console.log(a.slice(2)) //[3, 4]
console.log(a.slice(-2,-1)) //[3]

splice

Array.splice() 方法是在数组中插入或删除元素的方法,会修改调用的数组。
第一个参数指定了插入或删除的起始位置。第二个参数指定了应该从数组中删除的元素个数。如果省略第二个参数,从起点开始到数组结尾的所有元素都将被删除。splice() 返回一个由删除元素组成的数组。示例:

var a = [1,2,3,4]
console.log(a.splice(3)) // [4]
console.log(a.splice(1,2)) // [2, 3]

splice() 的前两个参数指定了需要删除的数组元素。紧随其后的任意个数的参数指定了需要插入到数组中的元素,从第一个参数指定的位置开始插入。例如:

var a = [1,2,3,4]
a.splice(2,0,'a','b')
console.log(a) // [ 1, 2, 'a', 'b', 3, 4 ]
a.splice(2,2,[1,2],3)
console.log(a) // [ 1, 2, [ 1, 2 ], 3, 3, 4 ]

push 和 pop

push() 和 pop() 方法允许将数组当作栈来使用。push() 方法在数组的尾部添加一个或多个元素,并返回数组新的长度。pop() 方法则相反:它删除数组的最后一个元素,减小数组长度并返回删除的值。两个方法都修改并替换原始数组而非生成一个修改版的新数组。示例:

var a = [1,2,3,4]
a.push(5)
console.log(a) //[ 1, 2, 3, 4, 5 ]
a.pop()
console.log(a) //[ 1, 2, 3, 4 ]

unshift 和 shift

unshift() 和 shift() 方法的行为非常类似于 push() 和 pop(),不一样的是 shift 和 unshift 对数组的第一个元素进行删除和插入操作

var a = []
a.unshift(2)
console.log(a) //[2]
a.unshift(3)
console.log(a) //[3,2]
a.shift()
console.log(a) //[2]

forEach

forEach() 方法从头到尾遍历数组,为每个元素调用指定的函数,该函数接收三个值:数组元素、元素的索引、和数组本身。如果只关心数组元素的值,可以只传一个值。示例:

var a = [1,2,3,4]
var sum = 0;
a.forEach(function (val) {sum += val
})
console.log(sum) //10
a.forEach(function (v, i, s) {s[i] = v + 1
})
console.log(a) //[ 2, 3, 4, 5 ]

map

map() 方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。示例:

var a = [1,2,3,4]
b = a.map(function (val) {return val * val
})
console.log(b) //[ 1, 4, 9, 16 ]

Tips: map() 返回的是新数组:它不修改调用的数组

filter

filter() 方法返回的数组元素是调用的数组的一个子集。传递的函数是用来逻辑判定的,函数如果返回值是 true,那么传递给判定函数的元素就是这个子集的成员。示例:

var a = [1,2,3,4]
var b = a.filter(function (x) {return x<3
})
console.log(b) //[1, 2]

every 和 some

every() 和 some() 方法是数组的逻辑判定:它们对数组元素应用指定的函数进行判定,返回 true 和 false
every() 方法当且仅当数组中的所有元素调用判定函数都返回 true,才返回 true:

var a = [1,2,3,4]
console.log(a.every(function (x) {return x < 5
})) //true

some() 方法当数组中至少有一个元素判定函数返回 true,它就返回 true; 并且当且仅当数组中的所有元素调用判定函数都返回 false,才返回 false

var a = [1,2,3,4]
console.log(a.some(function (x) {return x < 2
})) //true
console.log(a.some(isNaN)) //false

Tips: 一旦 every() 和 some() 确认该返回什么值时它们就会停止遍历元素

reduce 和 reduceRight

reduce()和 reduceRight()方法使用指定的函数将元素进行组合,生成单个值。可以称为 “注入” 和“折叠”。示例:

var a = [1,2,3,4]
var sum = a.reduce(function (x, y) {return x+y
},3)
console.log(sum) //13
var max = a.reduce(function (x,y) {return (x>y)?x:y
})
console.log(max) //4

reduce() 需要两个参数。第一个执行化简操作的函数。化简函数的任务就是用某种方法把两个值组合或化简为一个值,并返回化简后的值。
在空数组上,不带初始值参数调用 reduce() 将导致类型错误异常。如果调用它的时候只有一个值,数组只有一个元素并且没有指定初始值,或者有一个空数组并且指定一个初始值,reduce() 只是简单地返回那个值而不会调用简化函数。
reduceRight() 的工作原理和 reduce() 一样,不同的是它按照数组索引从高到底(从右到左)处理数组,而不是从低到高

indexOf 和 lastIndexOf

indexOf() 和 lastIndexOf() 搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或者如果没有找到就返回 - 1。indexOf() 从头到尾搜索,而 lastIndexOf() 则反向搜索。示例:

var a = [0,1,2,1,0]
console.log(a.indexOf(1)) //1
console.log(a.lastIndexOf(1)) //3
console.log(a.indexOf(3)) //-1

indexOf() 和 lastIndexOf() 方法不接收一个函数作为其参数,第一个参数是需要搜索的值,第二个参数是可选的:它指定数组的一个索引,从指定位置开始搜索。如果省略该参数,indexOf() 从头开始搜索,而 lastIndexOf() 从末尾开始搜索。

转载:js数组常用方法

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

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

相关文章

经济和行政手段使双高企业降低能耗总量和能耗强度,提高能源利用效率-安科瑞黄安南

摘要 2022年6月29日工信部、发改委、财政部、生态环境部、国资委、市场监管总局六部门联合下发《关于印发工业能效提升行动计划的通知》&#xff08;工信部联节〔2022〕76号&#xff0c;以下简称《行动计划》&#xff09;&#xff0c;主要目的是为了提高工业领域能源利用效率&…

修复git diff正文中文乱码

Linux git diff正文中文乱码 在命令行下输入以下命令&#xff1a; $ git config --global core.quotepath false # 显示 status 编码 $ git config --global gui.encoding utf-8 # 图形界面编码 $ git config --global i18n.commit.encoding utf-8 # …

Ubuntu18.04 拯救者R9-7945HX 4060 配置ZED 2i代双目相机驱动+ORBSLAM2

AMD的拯救者网卡很拉&#xff0c;研究了很久除了换网卡可以解决网络问题&#xff0c;其它没找到合适的办法&#xff0c;这里我用手机USB共享网络的方式勉强上网&#xff0c;这里不得不说华为的信号桥很好用。 之前在1050ti的电脑上布置过&#xff0c;很顺利&#xff0c;这个新…

原生js实现将图片内容复制到剪贴板

核心代码 /*复制图片*/ copyImg(dom) {/* 警告&#xff1a;dom不能是img标签&#xff0c;建议用DIV标签包裹img标签&#xff0c;否者会报错&#xff01;不支持复制背景图&#xff01; */dom.style.userSelect auto;let selection getSelection(), range document.createRan…

Springboot调整接口响应返回时长详解(解决响应超时问题)

一、前言 当后端对于数据量较大的处理或是某些耗时的操作时,需要先对请求接口的请求进行响应。实际场景中会遇到请求业务处理流程耗时较长&#xff0c;比如长查询&#xff0c;远程调用等&#xff0c;主线程会被一直占用会影响其他请求的响应&#xff0c;导致服务端性能下降。同…

【Ubuntu报错】NetworkManager is not running

如果你在运行nmcli命令时遇到"NetworkManager is not running"错误&#xff0c;这意味着NetworkManager服务没有在你的系统上运行。 你可以尝试以下步骤来启动NetworkManager服务&#xff1a; 检查NetworkManager服务的状态&#xff1a;运行以下命令来检查NetworkMa…

Linux--系统调用接口:open

open的库函数&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>open的函数形式&#xff1a; int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode); flags:标志位 标志位选项…

大模型开发(五):实现Jupyter本地调用OpenAI API

全文共3000余字&#xff0c;预计阅读时间约15分钟 | 满满干货&#xff0c;建议收藏&#xff01; 大模型开发(五)&#xff1a;实现Jupyter本地调用OpenAI API OpenAI作为本轮大语言模型技术进步的先驱&#xff0c;其系列大型模型在效果上一直保持着领先。其推出的各类模型如文本…

springboot第30集:springboot集合问题

Logstash Logstash 是开源的服务器端数据处理管道&#xff0c;能够同时从多个来源采集数据、格式化数据&#xff0c;然后将数据发送到es进行存储。 ElasticSearch Elasticsearch 是基于JSON的分布式搜索和分析引擎&#xff0c;是利用倒排索引实现的全文索引。 KibanaKibana 能够…

云原生环境 - 如何自定义容器hosts文件

背景 在虚拟机环境下,如果想要自定义hosts,可以直接修改/etc/hosts文件。 在云原生环境下,也有这样的需求,想给启动的容器添加自定义的hosts配置。比如 1、DNS配置以及其它选项不合理的时候,比如解析出的IP地址不正确 2、覆盖掉对主机名的解析或者添加对某些主机名的解析…

线程的创建以及使用(MFC/C/C++)

目录 一、创建线程的几种方法 1、使用POSIX线程库&#xff08;pthread)&#xff08;C&#xff09; 2、 使用Windows线程库&#xff08;Win32 API&#xff09;&#xff08;C&#xff09; 3、使用C11标准库 二、线程的应用&#xff08;常用实例&#xff0c;附上完整代码&…

如何搭建一个标准的测量系统

要搭建一个标准的测量系统,需要考虑以下几个方面: 确定测量目的和需求:首先需要明确测量的目的和需求,例如测量长度、重量、体积等。同时需要考虑测量的精度和误差范围,以及测量系统的适用范围和条件等。选择合适的传感器:根据测量目的和需求,选择合适的传感器类型,例如…

数字化时代,如何做好用户体验与应用性能管理​

引言 随着数字化时代的到来&#xff0c;各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务&#xff0c;这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责&#xff0c;且使用多种运维工具&#xff0c;因此&#xff0c;当…

Databend 开源周报第 102 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 为指定列创建 B…

极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析...

全文链接&#xff1a;http://tecdat.cn/?p24182 本文用 R 编程语言极值理论 (EVT) 以确定 10 只股票指数的风险价值&#xff08;和条件 VaR&#xff09;&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 使用 Anderson-Darling 检验对 10 只股票的组合数据进行…

【文生图系列】stable diffusion webui 汉化(双语)教程

文章目录 安装双语插件下载json源文件设置双语 这篇博文记录于我成功安装双语插件之后&#xff0c;所以以下的示例页面均是双语。汉化教程分为三步&#xff0c;安装插件&#xff0c;JSON源文件下载和最后一步的双语设置。 安装双语插件 在扩展&#xff08;extensions&#xf…

k8s如何访问 pod 元数据

如何访问 pod 元数据 **我们在 pod 中运行容器的时候&#xff0c;是否也会有想要获取当前 pod 的环境信息呢&#xff1f;**咱们写的 yaml 清单写的很简单&#xff0c;实际上部署之后&#xff0c; k8s 会给我们补充在 yaml 清单中没有写的字段&#xff0c;那么我们的 pod 环境信…

数学建模-典型相关分析

上节回顾 论文&#xff1a;常州大学一等奖淡水养殖… 要进行 pearson 相关系数 画散点图、折线图看是否相关检验正态分布满足上述&#xff0c;利用pearson相关系数 刚开始推导不会没关系&#xff0c;会应用就行&#xff0c;推导过程略&#xff0c;之后学习了后续知识&#xff…

❤️创意网页:HTML5,canvas创作科技感粒子特效(科技感粒子、js鼠标跟随、粒子连线)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

算法设计方法之回溯算法

回溯算法 介绍 回溯算法是算法设计中的一种方法。回溯算法是一种渐进式寻找并构建问题解决方式的策略。回溯算法会先从一个可能的动作开始解决问题&#xff0c;如果不行&#xff0c;就回溯并选择另一个动作&#xff0c;直到将问题解决。 就像你在一个迷宫里面遇到了当前有三…