数组方法中会更改原数组,不会更改原数组(详细)
1.不会改变原来数组的有:
concat()
连接两个或更多的数组,并返回结果。
如果arr.concat()里面不放数组参数,则会浅拷贝arr
如果参数不是数组,它不会递归到嵌套数组参数中
数据类型如字符串,数字和布尔(不是 String,Number 和 Boolean 对象):concat
将字符串和数字的值复制到新数组中
every()
检测数组元素的每个元素是否都符合条件。
callback
被调用时可传入三个参数:元素值,元素的索引,原数组
/ 箭头函数
every((element) => { /* … */ } )
every((element, index) => { /* … */ } )
every((element, index, array) => { /* … */ } )// 回调函数
every(callbackFn)
every(callbackFn, thisArg)// 内联回调函数
every(function(element) { /* … */ })
every(function(element, index) { /* … */ })
every(function(element, index, array){ /* … */ })
every(function(element, index, array) { /* … */ }, thisArg)
打印结果
some()
检测数组元素中是否有元素符合指定条件。
参数和every一样,不同是some全假为假
some()
为数组中的每一个元素执行一次 callback
函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some()
将会立即返回 true
。否则,some()
返回 false
filter()
检测数组元素,并返回符合条件所有元素的数组。
// 箭头函数
filter((element) => { /* … */ } )
filter((element, index) => { /* … */ } )
filter((element, index, array) => { /* … */ } )// 回调函数
filter(callbackFn)
filter(callbackFn, thisArg)// 内联回调函数
filter(function(element) { /* … */ })
filter(function(element, index) { /* … */ })
filter(function(element, index, array){ /* … */ })
filter(function(element, index, array) { /* … */ }, thisArg)
indexOf()
搜索数组中的元素,并返回它首次出现的位置。
参数 searchElement 要查找的元素
fromIndex 开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找,-2 表示从倒数第二个元素开始查找,以此类推。注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于 0,则整个数组都将会被查询。其默认值为 0。
const array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2 从第二个开始查找
array.indexOf(2, -1); // -1 // 从倒数第一个开始查找
array.indexOf(2, -3); // 0 //-3表示从倒数第三个开始查找
join()
把数组的所有元素放入一个字符串。
指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。如果省略,数组元素用逗号(,
)分隔。如果 separator
是空字符串(""
),则所有元素之间都没有任何字符
toString()
把数组转换为字符串,并返回结果。
function Dog(name) {this.name = name;
}const dog1 = new Dog('Gabby');Dog.prototype.toString = function dogToString() {return `${this.name}`;
};console.log(dog1.toString());
// expected output: "Gabby"
lastIndexOf()
返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
两个参数
searchElement
被查找的元素。
fromIndex
从此位置开始逆向查找。默认为数组的长度减 1(arr.length - 1
),即整个数组都被查找。如果该值大于或等于数组的长度,则整个数组会被查找。如果为负值,将其视为从数组末尾向前的偏移。即使该值为负,数组仍然会被从后向前查找。如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。
var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
index = array.lastIndexOf(7);
// index is -1
index = array.lastIndexOf(2, 3);
// index is 3
index = array.lastIndexOf(2, 2);/
// index is 0
index = array.lastIndexOf(2, -2);
// index is 0
index = array.lastIndexOf(2, -1);
// index is 3
map()
通过指定函数处理数组的每个元素,并返回处理后的数组。
参数
callbackFn
生成新数组元素的函数,使用三个参数:
currentValue
callbackFn
数组中正在处理的当前元素。
index
callbackFn
数组中正在处理的当前元素的索引。
array
map
方法调用的数组。
// 箭头函数
map((element) => { /* … */ })
map((element, index) => { /* … */ })
map((element, index, array) => { /* … */ })// 回调函数
map(callbackFn)
map(callbackFn, thisArg)// 内联回调函数
map(function(element) { /* … */ })
map(function(element, index) { /* … */ })
map(function(element, index, array){ /* … */ })
map(function(element, index, array) { /* … */ }, thisArg)
如果有以下情形,则不该使用 map
:
- 你不打算使用返回的新数组;或
- 你没有从回调函数中返回值
slice()
选取数组的的一部分,并返回一个新数组。
slice()
slice(start)
slice(start, end)
begin
可选
提取起始处的索引(从 0
开始),从该索引开始提取原数组元素。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2)
表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略 begin
,则 slice
从索引 0
开始。如果 begin
超出原数组的索引范围,则会返回空数组。
end
可选
提取终止处的索引(从 0
开始),在该索引处结束提取原数组元素。slice
会提取原数组中索引从 begin
到 end
的所有元素(包含 begin
,但不包含 end
)。slice(1,4)
会提取原数组中从第二个元素开始一直到第四个元素的所有元素(索引为 1, 2, 3 的元素)。如果该参数为负数,则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1)
表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。如果 end
被省略,则 slice
会一直提取到原数组末尾。如果 end
大于数组的长度,slice
也会一直提取到原数组末尾。
会返回一个浅复制了原数组中的元素的一个新数组
valueOf()
返回数组对象的原始值。
valueOf()
this
值,将其转换为一个对象。
find()
返回数组中符合测试函数条件的第一个元素
callbackFn
在数组每一项上执行的函数,接收 3 个参数:
element
当前遍历到的元素。
index
当前遍历到的索引。
array
数组本身。
// 箭头函数
find((element) => { /* … */ } )
find((element, index) => { /* … */ } )
find((element, index, array) => { /* … */ } )// 回调函数
find(callbackFn)
find(callbackFn, thisArg)// 内联回调函数
find(function(element) { /* … */ })
find(function(element, index) { /* … */ })
find(function(element, index, array){ /* … */ })
find(function(element, index, array) { /* … */ }, thisArg)
数组中第一个满足所提供测试函数的元素的值,否则返回 undefined
reduce()
可以作为累加器
个“reducer”函数,包含四个参数:
previousValue
:上一次调用 callbackFn
时的返回值。在第一次调用时,若指定了初始值 initialValue
,其值则为 initialValue
,否则为数组索引为 0 的元素 array[0]
。
currentValue
:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue
,其值则为数组索引为 0 的元素 array[0]
,否则为 array[1]
。
currentIndex
:数组中正在处理的元素的索引。若指定了初始值 initialValue
,则起始索引号为 0,否则从索引 1 起始。array
:用于遍历的数组。
// 箭头函数
reduce((previousValue, currentValue) => { /* … */ } )
reduce((previousValue, currentValue, currentIndex) => { /* … */ } )
reduce((previousValue, currentValue, currentIndex, array) => { /* … */ } )reduce((previousValue, currentValue) => { /* … */ } , initialValue)
reduce((previousValue, currentValue, currentIndex) => { /* … */ } , initialValue)
reduce((previousValue, currentValue, currentIndex, array) => { /* … */ }, initialValue)// 回调函数
reduce(callbackFn)
reduce(callbackFn, initialValue)// 内联回调函数
reduce(function(previousValue, currentValue) { /* … */ })
reduce(function(previousValue, currentValue, currentIndex) { /* … */ })
reduce(function(previousValue, currentValue, currentIndex, array) { /* … */ })reduce(function(previousValue, currentValue) { /* … */ }, initialValue)
reduce(function(previousValue, currentValue, currentIndex) { /* … */ }, initialValue)
reduce(function(previousValue, currentValue, currentIndex, array) { /* … */ }, initialValue)
2.会改变原来数组的有:
pop()
删除数组的最后一个元素并返回删除的元素。
push()
向数组的末尾添加一个或更多元素,并返回新的长度。
shift()
删除并返回数组的第一个元素。
unshift()
向数组的开头添加一个或更多元素,并返回新的长度。
reverse()
反转数组的元素顺序。
sort()
对数组的元素进行排序。
splice()
用于插入、删除或替换数组的元素。
数组方法中会更改原数组,不会更改原数组(详细)相关推荐
- JS数组方法中哪些会改变原数组,哪些不会?
前言 作为一名前端开发人员,我们每天都会与数组打交道.JS 也提供了很多操作数组的原生 API 供我们调用.在这些方法里面,有的方法会改变原数组,有些不会改变原数组.别看这一点小小的区别,往往会造成巨 ...
- JavaScript 常用数组方法及使用技巧「数组的力量隐藏在数组方法中,必收藏」
JavaScript 数组的力量隐藏在数组方法中. 没错!如果你只知道用数组,但是不知道数组的这些方法怎么用,那么你就不是真正的懂他. 正餐开始,来看看 JavaScript 中有哪些常用的数组方法! ...
- 数组方法中哪些会更改原数组,哪些不会更改原数组。
1.不会改变原来数组的有: concat()---连接两个或更多的数组,并返回结果. every()---检测数组元素的每个元素是否都符合条件. some()---检测数组元素中是否有元素符合指定条件 ...
- 数组方法中,会改变原数组、不会改变原数组的方法有哪些?
会改变原数组: 1 添加元素类:(返回新的长度) push() 把元素添加到数组尾部 unshift() 在数组头部添加元素 2 删除元素类:(返回的是被删除的元素) pop() 移除数组最后一个元素 ...
- php 遍历对象数组,js中遍历对象(5种)和遍历数组(6种)的方法总结
本篇文章给大家带来的内容是关于js中遍历对象(5种)和遍历数组(6种)的方法总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.遍历对象方法 1.for...in 遍历输出的是对 ...
- python怎么输出一个数组_python中实现将多个print输出合成一个数组
比如有下面一段代码: for i in range(10): print ("%s" % (f_list[i].name)) 该代码段的执行,会生成如下的10行"name ...
- c#将字符串转换为数组_C#中怎样把一个字符串转换成字符形数组?
展开全部 例: stringa="abcdefg"; string[]b=newstring[a.Length]; for(inti=0;i { b[i]=a.Substring( ...
- python同时输出两个数组_python中实现将多个print输出合成一个数组
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- js中数组方法不会影响原数组的方法
不会改变原数组方法: concat(),用于连接两个或多个数组: every().用于检测数组 所有元素是否都符合原始数组: filter(),创建一个新的数组,新数组的元素是通过检查指定数组中符合条 ...
最新文章
- 023_Jedis的发布和订阅
- mysqlsla日志分析工具
- 通过Zuul上传文件,禁用Zuul的Filters
- 李春雷 | 夜宿棚花村
- JVM(六)为什么新生代有两个Survivor分区? 1
- Python中使用PhantomJS抓取Javascript网页数据
- mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构
- 禅道下载docker安装
- ANSYS apdl命令流笔记15-------模态分析
- 快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)
- mds is damaged
- 转一篇有关竞争对手LANDESK CEO的故事
- 明解C语言入门篇_第10章_指针
- 原生js实现小方块拖拽
- 架构-分布式与集群的区别
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- 小蚁4K运动相机实现APP通过路由器连接控制拍照
- google账号登录第三方平台实现
- server接收dtu透传代码_深入ASP.NET Core源代码之 - Web Server Kestrel
- Arduino蜂鸣器《Viva La Vida》一小段旋律
热门文章
- linux防ddos攻击脚本,Linux IPTables防DDOS攻击Shell脚本
- 20年3月27日,Github被攻击。我的GitPage博客也挂了,紧急修复之路,也教会你搭建 Jekyll 博客!
- Springboot 工具类@Value取不到值
- Mysql 利用存储过程 实现单据号码(单号)生成器(万能版)
- ios 反编译 破解
- spinningup环境搭建
- javamail发送邮件到qq邮箱图片不能显示问题
- 刚才发现微软拼音-简洁2010是目前比较适合程序员的输入法
- CENTOS 7 添加黑名单禁止IP访问服务器
- 软件工程概念总结-期末重点-(简单中文+英文关键词)-第一部分软件过程(第1-6章)-罗杰S普莱斯曼