便于工作需要,现把js数组中常用的方法整理列出,包含ES6中最新提出的方法~
js常用方法(包含ES6之后的方法(全)
一、push()
push方法可以向数组的末尾添加一个或者多个元素,并返回新的数组长度。
语法:array.push(item1,item2,...itemx)
参数:
item 遍历的该元素
是否改变原数组:是
二、pop()
pop() 方法用于删除最后一个元素,并返回删除元素。
是否改变原数组:是
三、shift()
shift() 方法用于把数组的第一个元素从其中删除,并返回删除元素。
是否改变原数组:是
四、unshift()
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度
语法:array.unshift(item1,item2,...itemx)
参数:
item 遍历的该元素
是否改变原数组:是
五、sort()
sort()方法用于对数组的元素进行排序(常规数组、对象数组)。如不传参,默认排序顺序为按字母升序(按照字符串Unicode编码)。排序顺序可以是字母或数字,并按升序或降序。
参数:
- 不传,按照字符串Unicode编码排序
- 传callback函数,自定义排序方式
是否改变原数组:是
不传参数:
按照字母unicode编码排序
传递参数:(callback)
升序:a-b
降序:b-a
对象数组排序
注意:比较的是对象的属性但排序的是对象。
六、reverse()
reverse() 方法用于颠倒数组中元素的顺序
是否改变原数组:是
七、forEach()
forEach() 方法用于遍历数组的每个元素。
语法:array.forEach(callback(currentValue[, index[, array]]))
参数:
- item 遍历的该元素
- index 该元素的下标
- arr 当前数组
是否改变原数组:否
八、map()
map()对数组中的每个元素进行遍历,将其转换为另一个值,最终返回一个新的数组,该数组包含了经过处理后的每个元素。
语法:array.map(callback(currentValue[, index[, array]]))
callback
参数:
currentValue
遍历的该元素index
该元素的下标array
当前数组
是否改变原数组:否
注意:若在return时没返回值,则会返回undefined
一般用于在对象数组中,对莫个对象单独过滤出来一些属性。
九、filter()
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。返回新数组。
语法:array.filter(callback(currentValue[, index[, array]]))
callback
参数:
currentValue
遍历的该元素index
该元素的下标array
当前数组
是否改变原数组:否
一般用于过滤出满足项的数组
十、slice()
slice()从已有的数组中截取指定的元素,返回新数组
语法:array.slice(start,end)
参数:
start
截取数组中的起使位置,包含起使位置元素。正数,从左到右,从0开始,指定的开始元素的下标。负数,则表示从原数组的倒数第几个元素开始提取。。例如:slice(-2) 表示提取原数组中 的倒数第二个元素到最后一个元素(包含最后一个元素)。end
截取数组中的结束位置,不包含结束位置元素。正负数同理上。
是否改变原数组:否
例一:
例二:
十一、concat()
concat() 方法用于连接两个或多个数组,返回新数组。
语法:array.concat(item,item1...)
是否改变原数组:否
十二、join()
join() 方法用于把数组中的所有元素放入一个字符串。不改变原数组
该元素是通过指定的分隔符进行分隔的。
参数
:分隔符
是否改变原数组:否
十三、splice()
splice() 方法用于添加或删除数组中的元素。返回值为删除的元素组成的数组,若未删除元素,则返回空数组。
是否改变原数组:是
语法:array.splice(index,howmany,item,item1....)
参数:
index
:必须,规定从何处添加/删除元素。该参数是开始插入和删除的数组元素的下标,必须是数字
howmany:可选,规定应该删除多少元素。必须是数字,如果未规定此参数,则删除从index开始到原数组结 尾的所有元素。
item…itemX 可选,要添加到数组的新元素
例子一、
例二、
十四、includes()
includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
语法:array.includes(searchElement ,index)
参数:
searchElement
:必须,查找的元素
index
:可选,起使查找位置,下标值。
是否改变原数组:否
十五、indexOf()
indexOf() 方法可返回某个指定的元素在数组中首次出现的位置。如果没有找到则返回 -1,区分大小写。
语法:array.indexOf(searchElement ,index)
参数:
searchElement
:必须,查找的元素
index
:可选,起使查找位置,下标值。
是否改变原数组:否
十六、find()
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。没有符合条件的元素返回 undefined。
语法:array.find(callback(currentValue[, index[, array]]))
callback
参数:
currentValue
遍历的该元素
index
该元素的下标
array
当前数组
是否改变原数组:否
补充:findLast()
函数同理,只是数组从后往前找。
十七、some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供),有则返回true,木有返回false。
语法:array.some(callback(currentValue[, index[, array]]))
callback
参数:
currentValue
遍历的该元素
index
该元素的下标
array
当前数组
是否改变原数组:否
十八、every()
every() 方法用于检测数组所有元素是否都符合指定条件(函数提供),都符合则返回true,否则返回false。
语法:array.every(callback(currentValue[, index[, array]]))
callback
参数:
currentValue
遍历的该元素
index
该元素的下标
array
当前数组
是否改变原数组:否
十八、findIndex()
方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置,当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,如果没有符合条件的元素返回 -1
语法:array.findIndex(callback(currentValue[, index[, array]]))
callback
参数:
currentValue
遍历的该元素
index
该元素的下标
array
当前数组
是否改变原数组:否
补充:findLastIndex()
同理,从后往前找。
十九、reduce()
- reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
- reduce() 方法为数组的每个值(从左到右)执行提供的函数。
- 函数的返回值存储在累加器中(结果/总计)。
array.reduce(function(prev, cur, index, arr), initialValue)
prev
必选,上一次调用回调返回的值,或者是提供的初始值(initialValue)。
cur
必选,数组中当前被处理的元素
index
可选,当前元素在数组中的索引
arr
可选,调用的数组
initialValue
可选,传递给函数的初始值
是否改变原数组:否
例一、(无初始值情况)
- 无给初始值时,pre首次为数组第一个值,cur为数组第二个值。
- 后续pre为回调函数返回的值,直至循环结束。
例二、(有初始值)
- 若给初始值,pre为初始值,cur为第一个数组的值。
- 后续pre为回调函数返回的值,直至循环结束。
例三、(高级用法)
1、统计出现的次数:
2、数组对象去重
按id去重:
3、将多维数组转化为一维
二十、fill()
fill() 方法用于将一个固定值替换数组指定位置中的元素,返回新数组。
语法:array.fill(value ,start,end )
参数:
value
必填,填充的值。
start
非必填,开始填充位置(下标),包含起始位。
end
非必填,截止填充位置(下标),不包含结束位,默认arr.length。
是否改变原数组:是
二十一、isArray()
isArray() 这个方法用来判断一个对象是不是数组,是的话返回true,否则返回false
二十二、flat()
flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组。
语法:array.flat(floor )
参数:
floor
不填,默认展开一层。Infinity参数,全部展开。
是否改变原数组:否