mcq
数组方法整理
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
mcq
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
数组方法整理
数组方法整理
mcq
关注
发布于 2018-06-20 15:15:51
1.1K
0
发布于 2018-06-20 15:15:51
举报
文章被收录于专栏:
无所事事者爱嘲笑
数组方法
是否为数组
Array.isArray(param)
如果param是 Array,则为true; 否则为false。
数组转字符串
join
join(separator)
以separator为分隔符,省略的话则用
默认用逗号
为分隔符
可以实现重复字符串,实质是在n+1个空字符串之间加入要重复的字符串 function repeatString(str, n) { return new Array(n + 1).join(str) } console.log(repeatString("abc", 3)) // abcabcabc
不影响原数组
增删改数组
splice(start,length[,params])
删除:
参数:要删除的第一项的
位置
和要删除的
项数。
例如, splice(0,2)会删除数组中的前两项。
插入:
参数:起始
位置
、
0
(
要删除的项数
)和
要插入的项。
例如,splice(2,0,4,6)会从当前数组的位置 2 开始插入4和6。
替换:
参数:起始
位置
、
要删除的项数
和
要插入的任意数量的项
。
插入的项数不必与删除的项数相等。
例如,splice (2,1,4,6)会删除当前数组位置 2 的项,然后再从位置 2 开始插入4和6。
返回值为一个数组,该数组中
包含从原始数组中删除的项
,如果没有删除任何项,则返回一个
空数组
。
push()
接收任意数量的参数,将它们逐个添加到数组
尾部
返回值是修改后的
数组长度
pop()
数组尾部移除
最后一项
返回值是
被移除的项
shift()
移除数组
第一项
返回值为
被移除的项
数组为
空
则返回
undefined
unshift()
接收任意数量的参数,将他们添加到数组
头部
返回值是修改后的
数组长度
对比push和unshift
多参数
情况 可以把参数看做一个整体,按原有顺序放到数组的头(尾)部
push
let arr = [4,5,6]
arr.push(7,8,9) // arr=[4,5,6,7,8,9]
unshift
let arr =[4,5,6]
arr.unshift(1,2,3) // arr=[1,2,3,4,5,6]
数组排序
sort()
sort()方法会
调用每个数组项的 toString()
转型方法,然后比较得到的字符串,以确定如何排序。
即使数组中的每一项都是数值, sort()方法比较的也是字符串。
var arr1 = ["a", "d", "c", "b"]; console.log(arr1.sort()); // ["a", "b", "c", "d"] arr2 = [13, 24, 51, 3]; console.log(arr2.sort()); // [13, 24, 3, 51] (这里转换成字符串作比较,所以相当于每个字符串的
第一位
进行比较,即[1,2,5,3]。排序后变成[1,2,3,5],即[13,24,3,51],所以
个位数
比较不会出现这种问题) console.log(arr2); // [13, 24, 3, 51] (原数组被改变)
sort()方法可以接收一个比较
函数
作为参数,以便我们指定哪个值位于哪个值的前面。比较函数接收两个参数,如果
第一个参数应该位于第二个之前则返回一个负数
,如果
两个参数相等则返回0
,如果
第一个参数应该位于第二个之后则返回一个正数
。 升序: arr.sort(function(a,b){ return a-b }) 降序: arr.sort(function(a,b){ return b-a })
reverse()
反转数组项的顺序。
数组拼接
concat()
将参数添加到原数组中。
这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的
末尾
,最后
返回新构建的数组
。
在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
传入的不是数组,则直接把参数添加到数组后面,如果
传入的是数组,则将数组中的各个项添加到数组中
。
不影响原数组
数组切割
slice(start[,end])
返回从原数组中指定
开始下标
到
结束下标
之间的项组成的新数组,但
不包括结束位置
的项。
在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。
不影响原数组
数组搜索
indexOf()和 lastIndexOf()
参数:
要查找的项
和(可选的)表示查找
起点位置
的索引。可以是负数,它代表相对于数组末尾的个数。最后一个元素是-1,倒数第二个元素为-2,以此类推...
参数为NaN时返回-1,所以不能搜索数组中的NaN。
这两个方法都返回要查找的项在数组中的
位置
,或者在没找到的情况下返回
-1
。
比较参数和数组项时,会使用
全等
操作符。
不影响原数组
find()和findIndex() (
es6
)
在数组内部, 找到
第一个
符合条件的数组成员。 arr.find((value, index, arr) => { return value > 4 }) value:每一次迭代查找的数组
元素
。 index:每一次迭代查找的数组
元素索引
。 arr:
被查找的数组
。
find()函数,找到就返回
该元素
,找不到返回
undefined。
findIndex()函数,找到就返回元素的
位置
,找不到就返回
-1
。
可以搜索NaN的位置。
arr.findIndex((value)=>{ return
Object.is
(NaN,value) })
不影响原数组
includes() (
es7
)
表示某个数组
是否包含给定的值
,与字符串的includes()方法类似
第一个参数表示
要查找的数
,第二个参数表示搜索的
起始位置
,返回一个
布尔值
。
推荐使用这个而不是indexOf()因为后者会对NaN造成误判。 arr.includes(NaN)
不影响原数组
数组归并
reduce()和 reduceRight()
参数:每一项上调用的
函数
和(可选的)作为归并基础的
初始值
。
回调函数
参数:
前一个值
、
当前值
、项的
索引
和
数组对象
。
reduce()从数组的第一项开始,逐个遍历到最后。
reduceRight()从数组的最后一项开始,向前遍历到第一项。
空数组上,不带初始值参数调用将会报错。
如果
只有一个元素且没有指定初始值
,或者
空数组指定了一个初始值
,reduce()只是简单地
返回那个值而不会调用化简函数
函数返回的任何值都会作为第一个参数自动传给下一项。
数组求和(数组一开始加了一个初始值10)。 arr.reduceRight(function(prev, cur, index, array){ return prev + cur; },10)
不影响原数组
数组迭代
都不影响原数组
forEach()
对数组中的每一项运行给定函数。
函数参数:
元素
,
索引
,
数组本身
。
没有返回值
map()
返回每次函数调用的结果组成的数组
。
filter()
返回满足过滤条件组成的数组。
every()
判断数组中每一项都是否满足条件。
只有所有项都满足条件,才会返回true。
若有一个参数为
false
,则返回,忽略执行后面的参数。
some()
判断数组中是否存在满足条件的项。
只要有一项满足条件,就会返回true。
若有一个参数
为true
, 则返回, 忽略执行后面的参数。
数组成员复制
copyWithin() (
es6
)
在数组内部,将指定位置的成员复制到其他位置(
会覆盖原有成员
)。
参数:
target(必须):
从该位置开始替换数据
;
start(可选):
从该位置开始读取原数组数据
;
end(可选):
复制到该位置的前一个位置截止
。
[1, 2, 3, 4, 5, 6].copyWithin(2) // [1, 2, 1, 2, 3, 4]
[1, 2, 3, 4, 5, 6].copyWithin(2,1) // [1, 2, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6].copyWithin(2,1,4) // [1, 2, 2, 3, 4, 6]
数组填充
fill(value[,start[,end]]) (
es6
)
将一个固定值替换数组的元素(
会覆盖原有成员
)。
value必需。填充的值。
start可选。开始填充位置。
end可选。停止填充位置 (默认为 array.length),填充至指定位置前一个。
[a,b,c,d].fill('e') // [e,e,e,e]
[a,b,c,d].fill('e',2) // [a,b,e,e]
[a,b,c,d].fill('e',2,3) // [a,b,e,d]
其他值转化成数组
Array.from(arrayLike[, mapFn[, thisArg]]) (
es6
)
将部署了Iterator接口的对象,比如:Set,Map,Array;和类数组对象转换成数组。
类数组对象,就是一个对象必须有length属性
,
没有length,转出来的就是空数组
。
arrayLike:被转换的的对象。
mapFn:map函数。用来对每个元素进行处理,将处理后的值放入返回的数组。
thisArg:map函数中this指向的对象。
兼容写法 if (!Array.from) { Array.from = function(obj) { return [].slice.call(obj) } }
Array.of()
将一组值转化为数组。
参数:无或无限(无时返回一个空数组)。
兼容写法 if (!Array.of) { Array.of = function() { return Array.prototype.slice.call(arguments) } }
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2018-01-26 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
编程算法
ecmascript
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
编程算法
ecmascript
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐