js数组的操作汇总
经常操作数组,统一做一次整理吧
entries、keys、values
示例
ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。
keys
1 | for (let index of ['a', 'b'].keys()) { |
values
1 | for (let item of ['a', 'b'].values()) { |
entries
1 | for (let [index, value] of ['a', 'b'].entries()) { |
fromEntries
一般结合Object.fromEntries
数组转对象
1 | // 对象转数组 |
concat
合并多个数组,返回合并后的新数组,原数组没有变化。
1 | const array = [1,2].concat(['a', 'b'], ['name']); |
另外也可以通过
1 | const arr1 = [1, 2] |
indexOf
indexOf()方法返回在该数组中第一个找到的元素位置,如果它不存在则返回-1。
语法
1 | array.indexOf(item,start) |
item
必须。查找的元素。start
可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
示例
1 | var arr = ['apple','orange','pear']; |
forEach
只要是for循环能够遍历的数组,forEach都可以实现。
语法
1 | array.forEach(function(currentValue, index, arr), thisValue) |
currentValue
必需。当前元素index
可选。当前元素的索引值。arr
可选。当前元素所属的数组对象。
示例
1 | let arr1 = [1, 5, 7, 8, 9, 6] |
some every
- some方法 如果数组中有一个元素满足条件,返回true 否则返回false
- every方法 如果数组中所有元素都满足条件则返回true 否则返回false
语法
1 | array.some(function(currentValue,index,arr),thisValue) |
currentValue
必须。当前元素的值index
可选。当前元素的索引值arr
可选。当前元素属于的数组对象
示例
1 | let arr = [5, 7, 8, 9, 6, ] |
filter
- 将数组中符合条件的元素留下来组成一个新的数组
- filter() 不会改变原始数组。
语法
1 | array.filter(function(currentValue,index,arr), thisValue) |
currentValue
必须。当前元素的值index
可选。当前元素的索引值arr
可选。当前元素属于的数组对象
示例
filter简单过滤
1 | let arr = [1, 5, 6, 3, 4, 2, 8, 7]; |
filter数组去重
1 | var array = [1, 2, 1, 2, 4, 5, 3, 5, 6, 7, 6]; |
find
- 遍历数组,当找到第一个符合条件的元素的时候,就会停止遍历,并返回这个元素,如果没找到符合条件的数组就输出undefined
实例:
语法
1 | array.find(function(currentValue, index, arr),thisValue) |
currentValue
必需。当前元素index
可选。当前元素的索引值arr
可选。当前元素所属的数组对象
示例
1 | let arr = [1, 5, 6, 3, 4, 2, 8, 7]; |
includes
- 只要对应数组中包含这个元素,就返回true, 否则返回false
语法
1 | arr.includes(searchElement) |
searchElement
必须。需要查找的元素值。fromIndex
可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
示例:
1 | let arr = [1, 5, 6, 3, 4, 2, 8, 7]; |
map
- 根据已知数组把已知数组作为元素生成新的的数组,新数组的长度与已知数组长度一致
语法
1 | array.map(function(currentValue,index,arr), thisValue) |
currentValue
必须。当前元素的值index
可选。当前元素的索引值arr
可选。当前元素属于的数组对象
示例
1 | let arr = [1, 5, 6, 3, 4, 2, 8, 7]; |
reduce
定义和用法
- reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
- reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
语法
1 | array.reduce(function(total, currentValue, currentIndex, arr), initialValue) |
total
必需。初始值, 或者计算结束后的返回值。currentValue
必需。当前元素currentIndex
可选。当前元素的索引arr
可选。当前元素所属的数组对象。
示例
reduce累加求和
1 | const arr = [3,9,4,3,6,0,9] |
reduce数组最大值
1 | const arr = [3,9,4,3,6,0,9] |
reduce数组去重
1 | const arr = [3,9,4,3,6,0,9] |
reduce数组对象去重
1 | let person = [ |
sort
语法
1 | array.sort(sortfunction) |
示例
1 | var points = [40, 100, 1, 5, 25, 10] |
Set
示例
Set数组去重
1 | const arr = [3,9,4,3,6,0,9] |