split()、splice()、reduce()和reduceRight()
split()
这个方法会根据传入的分隔符将字符串拆分成数组。作为分隔符的参数可以是RegExp对象。(字符串分隔符不会被这个方法当成正则表达式。)还可以传入第二个参数,即数组大小,确保返回的数组不会超过指定大小。来看下面的例子:
let colorText = "red,blue,green,yellow";let colors1 = colorText.split(","); // ['red', 'blue', 'green', 'yellow']
let colors2 = colorText.split(",",2); // ["red","blue"]
let colors3 = colorText.split(/[^,]+/); // ["", ",", ",", ",", ""] 数组前后包含两个空字符串,是因为正则表达式指定的分隔符出现在了字符串开头(“red”)和末尾(“yellow”)。
splice()
splice()的主要目的是在数组中间插入元素,有3中不同的方式使用这个方法。
1.删除。
需要给splice()传2个参数:要删除的第一个元素的位置和要删除的元素数量。可以从数组中删除任意多个元素,比如splice(0,2)会删除前两个元素。
2.插入。
需要给splice()传3个参数:开始位置、0(要删除的元素的数量)和要插入的元素,可以在数组中指定的位置插入元素。第三个参数之后还可以传第四个、第五个参数,乃至任意多个要插入的元素。比如,splice(2,0,“red”,“green”)会从数组位置2开始插入字符串"red"和"green"。
3.替换。
splice()在删除元素的同时可以在指定位置插入新元素,同样要传入3个参数:开始位置、要删除元素的数量和要插入的任意多个元素。要插入的元素数量不一定跟删除得到元素数量一致。比如:splice(2,1,“red”,“green”)会在位置2删除一个元素,然后从该位置开始向数组中插入"red"和"green"。
splice()方法始终返回这样一个数组,它包含从数组中被删除的元素(如果没有删除元素,则返回空数组)。以下示例展示了上述3种使用方式。
let colors = ["red","green","blue"];
let removed = colors.splice(0,1); //删除第一项
alert(colors); // green,blue
alert(removed); //red,只有一个元素的数组removed = colors.splice(1,0,"yellow","orange"); // 在位置1插入两个元素
alert(colors); // green,yellow,orange,blue
alert(removed); // 空数组removed = colors.splice(1,1,"red","purple"); // 插入两个值,删除一个元素
alert(colors); // green,red,purple,orange,blue
alert(removed); // yellow,只有一个元素的数组
归并方法:reduce()和reduceRight()
ECMAScript为数组提供了两个归并方法:reduce()和reduceRight()。
这两个方法都会迭代数组的所有项,并在此基础上构建一个最终返回值。
reduce()方法从数组第一项开始遍历到最后一项。而reduceRight()从最后一项开始遍历至第一项。
这两个方法都接收两个参数:对每一项都会运行的归并函数,以及可选的以之为归并起点的初始值。
传给reduce()和reduceRight()的函数接收4个参数:上一个归并值、当前项、当前项的索引和数组本身。这个函数返回的任何值都会作为下一次调用同一个函数的第一个参数。如果没有给这两个方法传入可选的第二个参数(作为归并起点值),则第一次迭代将从数组的第二项开始,因此传给归并函数的第一个参数是数组的第一项,第二个参数是数组的第二项。
可以使用reduce()函数执行累加数组中所有数值的操作,比如:
let values = [1,2,3,4,5];
let sum = values.reduce((prev,cur,index,array)=>prev + cur);alert(sum); //15
第一次执行归并函数时,prev是1,cur是2。第二次执行时,prev是3 (1+2),cur是3(数组第三项)。如此递进,直到把所有项都遍历一次,最后返回归并结果。
reduceRight()方法与之类似,只是方向相反。来看下面的例子:
let values = [1,2,3,4,5];
let sum = values.reduceRight(function(prev,cur,index,array){return prev + cur;});alert(sum); //15
在这里,第一次调用归并函数时prev是5,而cur是4。当然,最终结果相同,因为归并操作都是简单的加法。
究竟是使用reduce()还是reduceRight(),只取决于遍历数组元素的方向。除此之外,这两个方法没什么区别。
split()、splice()、reduce()和reduceRight()相关推荐
- JavaScript学习笔记:数组reduce()和reduceRight()方法
很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...
- 转载:JS数组reduce()和reduceRight()方法
原文: http://www.w3cplus.com/javascript/array-part-8.html © w3cplus.com 很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到 ...
- java中RIGHT的值_java循环遍历, reduce(),reduceRight()方法和Object,keys遍历对象的属性...
最近几年,随着高新技术的不断出现,各种编程软件也开始进入到人们的视野当中.今天就来为大家说一下java编程语言的基础知识,也就是java循环遍历, reduce(),reduceRight()方法和O ...
- js中split,splice,slice方法之间的差异。
首先我们先来林格斯双击翻译一下: split 劈开, 使分裂: splice 接合; 使结合: slice 切成薄片, 切: 我先是这么区分的:这三个方法最后一个字母是t的是字符串方法,是e的 ...
- JavaScript数组的高级用法-reduce和reduceRight详解
2019独角兽企业重金招聘Python工程师标准>>> reduce 方法(升序) 语法: array1.reduce(callbackfn[, initialValue]) 参数 ...
- js中数组过滤、遍历、迭代every、some、filter、map、forEach、reduce、reduceRight
全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组过滤.遍历.迭代 数组的过滤.遍历.迭代操作中 1.过滤为将满足条件的元素筛选出来,返回数组 2.遍历为分别计算每一个元素值 ...
- split,splice,slice 三者的用法
一.split split主要用于字符串的分割,可以根据某个字符把字符串拆分成多个数组 var str = "Front-end-bully"Arr = str.slite(&qu ...
- slice,split,splice的区别与用法
1.slice:截取数组,返回截取到的新数组,不改变原有数组 arr.slice(start,end); start:必需,从原数组的start位置开始截取(包括下标为star ...
- js数组的reduce与reduceRight方法
数组由众多的实例方法,下面记录下reduce的使用方法 arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initi ...
最新文章
- 3.5.4 CSMA/CD 协议
- Rafy 框架 - 大批量导入实体
- Python编程:Tkinter图形界面设计(1)
- 新人如何快速上手项目管理
- 声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter)
- xilinx IP核技术资料
- 首页终于让百度放出来了
- Transformers Assemble(PART I )
- java游戏精灵薇薇安_薇薇安和骑士召唤师使用技巧
- 不完美破解四川电信中兴B860A高安机顶盒
- coap协议详解 服务器,COAP协议解析和简单打包实现
- 在线web表单设计器
- r导入txt乱码_R中导入excel乱码的解决办法
- 130 余个相见恨晚的超实用网站
- 搜狗输入法英文字母间隔大
- Python备份Mysql脚本_python备份mysql脚本
- 超详细——入门Github的代码上传
- 独立,做新世纪的好少年,无所畏惧
- 区块链教程、区块链指南、区块链中文手册、区块链原理
- Petri网-3.4 C/E 系统 与 3.5 P/T 系统