concat合并的数组会有顺序么_JS 数组操作 记录 笔记

Array数组的方法

Mutator方法————"突变方法"会改变数组自身的值;Accessor方法————"访问方法"不会改变数组自身的值;Iteration方法————"遍历的方法" Establish方法————"创建新方法"
6557801eb800e2e7dc3b9882688daa1f.png

Mutator方法(会改变数组自身的值)

1、[ ].push

作用:将一个或多个元素添加到数组的末尾,

传参:(单个或多个数组元素);

返回值:新数组的长度;

 //标准用法 arr.push(el1, el2 ……elN); //合并两个数组 [].push.apply(arr1, arr2)

2、[].pop()

作用:删除最后一个元素,

传参:无;

返回值:删除的元素。

//标准用法let a = [1 ,2 ,3 ];a.pop();//3

3、[ ].unshift

作用:将一个或多个元素添加到数组的开头,

传参:(单个或多个数组元素);

返回值:新数组的长度;

 //标准用法 arr.unshift(el1, el2 ……elN);

4、[].shift()

作用:删除第一个元素,

传参:无;

返回值:删除的元素。

//标准用法let a = [1 ,2 ,3 ];a.shift();//1

5、[].reverse()

作用:数组元素颠倒位置,

传参:无;

返回值:颠倒后的数组。

//标准用法arr.reverse()

6、[].splice()

作用:向/从数组中添加/删除项目,然后返回被删除的项目,

传参:(索引,删除个数【选】,要添加的元素【选】);

返回值:被删除的元素组成的一个数组。

//标准用法array.splice(start)array.splice(start, deleteCount) array.splice(start, deleteCount, item1, item2, ...)

7、[].fill()

作用:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,

传参:(用来填充数组元素的值,起始索引【选】,终止索引【选】);

返回值:修改后的数组。

//标准用法arr.fill(value) arr.fill(value, start) arr.fill(value, start, end)//例子[1, 2, 3].fill(4)            // [4, 4, 4][1, 2, 3].fill(4, 1)         // [1, 4, 4][1, 2, 3].fill(4, 1, 2)      // [1, 4, 3]

8、[].sort()

作用:对数组的元素进行排序,并返回数组,

传参:(指定排列顺序的函数【选】);

返回值:排列后的数组。

//标准用法arr.sort() arr.sort(compareFunction)//例子let numbers = [4, 2, 5, 1, 3];numbers.sort((a, b) => {    return a - b;});// [1, 2, 3, 4, 5]

Accessor方法(不会改变数组自身的值)

1、[ ].join

作用:将数组(或一个类数组对象)的所有元素连接到一个字符串中。

传参:(指定一个字符串来分隔数组的每个元素【选】);

返回值:一个所有数组元素连接的字符串;

//标准用法let a = ['Wind', 'Rain', 'Fire'];let myVar1 = a.join();      // myVar1的值变为"Wind,Rain,Fire"let myVar2 = a.join(', ');  // myVar2的值变为"Wind, Rain, Fire"

2、[ ].concat

作用:合并两个或多个数组。

传参:(将数组和/或值连接成新数组【选】);

返回值:合并后的数组;

//标准用法let alpha = ['a', 'b', 'c'];let numeric = [1, 2, 3];alpha.concat(numeric);//['a', 'b', 'c', 1, 2, 3]

3、[ ].slice

作用:方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组。

传参:(开始索引【选】,结束索引【选】);

返回值:截取后的数组;

//标准用法let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];let citrus = fruits.slice(1, 3);console.info(citrus );     //['Orange','Lemon'] //类数组转数组function list() {     return [].slice.call(arguments)}let list1 = list(1, 2, 3);     //[1, 2, 3]  

4、[ ].toString

作用:返回一个字符串,表示指定的数组及其元素,

传参:(无);

返回值:转化成的字符串;(=[].join())

//标准用法let monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];let myVar = monthNames.toString();     // assigns "Jan,Feb,Mar,Apr" to myVar.

5、[ ].includes

作用:判断一个数组是否包含一个指定的值,

传参:(要查找的元素);

返回值:true或 false;

//标准用法let a = [1, 2, 3];a.includes(2); // true a.includes(4); // false  

6、[ ].indexOf

作用:在数组中可以找到一个给定元素的第一个索引,

传参:(要查找的元素);

返回值:找不到-1,找得到索引;

let array = [2, 5, 9];array.indexOf(2);     // 0array.indexOf(7);     // -1

Iteration方法

1、[ ].forEach

作用:每个元素执行一次提供的函数,

传参:(callback(当前元素,索引,该数组));

返回值:无;

 //标准用法 array.forEach(callback(currentValue, index, array){ //do something}, this)

2、[ ].find

作用:返回数组中满足提供的测试函数的第一个元素的值,

传参:(callback(当前元素,索引,该数组));

返回值:该元素;([].findIndex()返回索引)

 //标准用法 array.find(callback(currentValue, index, array){ //do something}, this)let num = [1,2,3];console.log(num.find( value => {    if(value === 2){        return true;    }    return false;}));  // 2

3、[ ].filter

作用:创建一个新数组, 其包含通过所提供函数实现的测试的所有元素,

传参:(callback(当前元素,索引,该数组));

返回值:通过测试的元素的集合的数组;

 //标准用法 let arr = array.filter(callback(currentValue, index, array){     //do something }, this)

4、[ ].map

作用:创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

传参:(callback(当前元素,索引,该数组));

返回值:一个新数组,每个元素都是回调函数的结果;

 //标准用法 let numbers = [1, 4, 9]; let roots = numbers.map(Math.sqrt); // roots的值为[1, 2, 3],  //numbers的值仍为[1, 4, 9]

5、[ ].every

作用:测试数组的所有元素是否都通过了指定函数的测试;

传参:(callback(当前元素,索引,该数组));

返回值:true或false;

//标准用法function isBigEnough(element, index, array) {    return (element >= 10);}let passed = [12, 5, 8, 130, 44].every(isBigEnough);    // passed is false    passed = [12, 54, 18, 130, 44].every(isBigEnough);    // passed is true

6、[ ].some

作用:测试数组的某些元素是否都通过了指定函数的测试;

传参:(callback(当前元素,索引,该数组));

返回值:true或false;

//标准用法function isBigEnough(element, index, array) {    return (element >= 10);}let passed = [1, 5, 8, 3, 4].some(isBigEnough);    // passed is false    passed = [2, 4, 18, 13, 4].some(isBigEnough);    // passed is true

7、[ ].reduce

作用:对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值;

传参:(callback(累加器accumulator,当前元素,索引,该数组));

返回值:函数累计处理的结果;

//标准用法let total = [0, 1, 2, 3].reduce((sum, value) => {    return sum + value;}, 0);// total is 6let flattened = [[0, 1], [2, 3], [4, 5]];flattened.reduce((a, b) => {    return a.concat(b);}, []);// flattened is [0, 1, 2, 3, 4, 5]   

8、[ ].entries

作用:返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对;

传参:无;

返回值:一个新的 Array 迭代器对象;

   //标准用法   var arr = ["a", "b", "c"];   var iterator = arr.entries();// undefined   console.log(iterator);// Array Iterator {}   console.log(iterator.next().value); // [0, "a"]   console.log(iterator.next().value); // [1, "b"]   console.log(iterator.next().value); // [2, "c"]

9、[ ].values

作用:数组转对象;

传参:无;

返回值:一个新的 Array 迭代器对象;

   //标准用法   let arr = ['w', 'y', 'k', 'o', 'p'];   let eArr = arr.values();    // 您的浏览器必须支持 for..of 循环   // 以及 let —— 将变量作用域限定在 for 循环中  for (let letter of eArr) {       console.log(letter);   }

Establish方法(创建新方法)

Array.from()

该方法基于一个类数组的对象或可迭代的对象,创建一个新的数组实例。该方法接收一至三个参数,各个参数如下:

  1. 参数1是一个类数组对象或可迭代对象,方法基于该对象创建数组。函数的返回值将作为新数组中的每一项的值。必需的参数。
  2. 参数2是一个函数,数组的每一项都会调用该函数。非必需参数。
  3. 参数3指定在参数2中,this所代表的对象。非必需参数。

类数组对象是具有length属性并含有被编上索引的元素的对象,如NodeList对象。 可迭代对象是可以获得其中的元素的对象,如Map和Set

var str = "hello";Array.from(str, x => x + x);      // ["hh", "ee", "ll", "ll", "oo"]

上面的代码中接收一个字符串为第一个参数,接收箭头函数作为第二个参数。在箭头函数中,对每一项做了复制操作,然后返回得到的值,作为数组的每一项。

Array.of()

该方法接收一系列参数,并以这些参数为项,创建一个数组,并返回该数组。

var arra = Array.of("red", "green", "blue");console.log(arra);         //  ["red", "green", "blue"]

该方法与构造函数Array()类似,但有一点不同。当接收到只有一个数值类型的参数时,Array()会创建一个数值参数指定的长度的数组,而Array.of()会将该数值作为数组中的项添加进数组。

var arra1 = new Array(7);console.log(arra1);     //  [undefined × 7]var arra2 = Array.of(7);console.log(arra2);     //  [7]
6c93502835ab8f666c6b0cfe4ed0d363.png

极地雪狼li

极地雪狼li

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

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

相关文章

服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的

我们都知道SSL认证能够分成SSL双向认证和SSL单向认证。那么,什么是SSL双向认证?SSL双向认证过程又是怎样的?小编就在接下来的内容为各位详细讲述。什么叫SSL双向认证SSL双向认证则是需要是服务端需要客户端提供身份认证,只能是服务…

依赖: ros-melodic-desktop 但是它将不会被安装_npm系列之依赖管理

1. 版本控制npm依赖包使用语义化的版本号,让开发者可以从版本号中推测修改。版本号格式为:X.Y.ZX:代表主版本号,只有更新了不向下兼容的API时才需要修改Y:次版本号,当模块增加了向下兼容的功能时需要修改Z&…

怎么修改ipv4服务器,如何修改ipv4 wins 服务器地址

如何修改ipv4 wins 服务器地址 内容精选换一换IPv6的使用,可以有效弥补IPv4网络地址资源有限的问题。如果当前云服务器使用IPv4,那么启用IPv6后,云服务器可在双栈模式下运行,即云服务器可以拥有两个不同版本的IP地址:I…

python 追加到字典_使用Python读取,写入和解析JSON

JSON是用于数据交换的轻量级数据格式,可以很容易地被人类读取和写入,也可以由机器轻松解析和生成。它是一种完全独立于语言的文本格式。为了处理JSON数据,Python有一个名为的内置包json。示例: s {“ id”:01&#xff…

couchbase_适用于具有Couchbase和WildFly的多容器和多主机应用程序的Docker Machine,Swarm和Compose...

couchbase该博客将说明如何使用Docker创建部署在多个主机上的多容器应用程序。 这将使用Docker Machine,Swarm和Compose实现。 是的,这三个工具一起使这个博客变得更加有趣! 该图说明了关键组件: Docker Machine用于配置多个D…

云服务器可以文件服务器,云服务器 可以上传文件

云服务器 可以上传文件 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器。例如QQ.exe。本地磁盘映射(推荐使…

机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...

[ 写在前面 ]自智云社区开辟IoT开源项目专区以来,一直有IoT开发者在贡献案例。玛莉甄选了一些具有代表性的案例分享给IoT爱好者们,本文亦如此。若你有好的案例,想和IoT爱好者们分享,欢迎投稿,一经采纳,我们…

drools。drools_Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明

drools。drools在六月,我们在博客上发布了一个新的内部状态机,用于管理用户,计时器和引擎线程之间的交互。 现在,我们对该代码进行了另一次大的内部清理,以使其更易于阅读和理解。 如前所述,所有操作&…

云服务器文件打包,云服务器文件打包

云服务器文件打包 内容精选换一换Winscp无法连接到服务器。SSH连接工具例如Xshell可以正常连接云服务器。其他SSH工具连接云服务器正常,但是Winscp无法连接到服务器。说明SSH服务是没有问题的,Winscp连接基于的是SFTP协议。查看/etc/ssh/sshd_config文件…

完全复制一个dict_Redis主从复制getshell技巧

Redis未授权漏洞常见的漏洞利用方式:Windows下,绝对路径写webshell 、写入启动项。Linux下,绝对路径写webshell 、公私钥认证获取root权限 、利用contrab计划任务反弹shell。基于Redis主从复制的机制,可以完美无损的将文件同步到…

pcl_openmap_OpenMap教程3 –使用MapHandler构建基本的地图应用程序–第2部分

pcl_openmap1.简介 在上一教程中,我们了解了MapHandler如何将各种组件连接在一起(更具体地说,是从MapHandlerChild派生的类)。 我们看到了如何以编程方式执行此操作,但是还有另一种声明性地使用openmap.properties 。 …

xy轴坐标图数字表示_【相机标定】四个坐标系之间的变换关系

点击上方“新机器视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达世界坐标系,相机坐标系,图像物理坐标系,像素坐标系之间的关系:首先看下几个坐标系在放在一块的样子:1&#xff…

设计模式的Java 8 Lambda表达式-策略设计模式

策略模式定义封装在通常称为Context的驱动程序类中的一系列算法,并使这些算法可互换。 它使算法易于互换,并提供了在特定时间选择适当算法的机制。 算法(策略)在运行时由客户端或上下文选择。 在与客户端交互期间,Con…

调用打印机_涨知识|你不知道的关于打印机的打印过程和打印机驱动的那些事...

以前一直以为打印很简单,不就是编辑好文件按个“打印”就行了?但其实打印过程可以复杂到你分分钟“怀疑人生”。你以为的打印过程可能是这样的 ↓。我们看到的打印过程然而,真正的打印过程是这样的 ↓。实际上的打印过程打印机打印一页文件或…

kite 使用 go_使用Apache Storm和Kite SDK Morphlines的可配置ETL处理

kite 使用 go从我担任软件工程师的第一天起,我总是听到很多方面的相同要求: “ 我们希望所有内容都可配置,我们希望在运行时更改所有内容,我们希望有一个可视化工具来应用所有这些逻辑,以便非开发人员使用和配置我们的…

使用react实现select_使用 Hooks 优化 React 组件

奇技指南本文内容主要是我之前分享的文字版,若想看重点的话可以看之前的Slide: https://ppt.baomitu.com/d/75fc979a本文作者奇舞团前端开发工程师李喆明。需求描述由于作者所在的业务是资讯内容类业务,因而在业务中会经常碰到如下场景:有一个…

cacti不能实时刷新流量图_介绍一种编码帧内刷新算法

0.引言本文主要介绍一种帧内刷新算法,解决I帧太大带来的延迟问题,可以在调优时,值得借鉴。帧内刷新技术避免 I 帧尖峰带来的带宽压力,可以有效地降低视频通信中的缓冲区延迟。帧内刷新算法是一种视频错误恢复的方法,通…

按钮自动居中布局_CSS布局技巧

css实现左右布局和居中布局显示是前端进行页面设计的基础,也是全面了解并学习css一个很好的切入点,因为其中会涉及到对许多css基础点的认知。实现css入门,理解左右布局的实现方式是必经之路,同时也能使我们在项目中涉及前端编码的…

jooq_jOOQ星期二:拉斐尔·温特豪德(Rafael Winterhalter)正在与字节好友合作字节码...

jooq欢迎来到jOOQ Tuesdays系列。 在本系列文章中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL,Java,开放源代码以及各种其他相关主题的人员。 我们很高兴在第七版中…

多方法接口回调_啊?Java反射遇到接口

本文适合有点Java反射基础的同学,在Java反射调用方法时遇到接口参数是一件很蛋疼的事情。在反射调用方法时需要传参数,像传递基本数据类型进去用就完事,传个对象进去怎么整都没关系,因为你在外部有对象的引用,但 如果需…