目录
一、改变原数组的方法
1. push()
末尾添加一个或多个数值,并返回新的长度:array.push(1) / array.push(1,2,3) / array.push(...[一个数组])。
2. pop()
删除末尾数据,并返回删除的元素:array.pop()。
3. unshift()
头部添加数据,和push()使用方法一样。
4. shift()
头部删除数据,和pop()使用方法一样。
5. reverse()
反转数组:array.reverse()。
6. sort()
数组排序
①sort((a,b)=>a-b),正序小->大。
②sort((a,b)=>b-a),倒序大->小。
7. splice()
对数组进行删除、截取、替换、添加:
①一个参数splice(index), 从index的位置开始,删除之后的所有元素(包括第index个),若 index < 0 , 则删除最后-index个元素。
②两个参数splice(index,howmany) ,删除从index位置开始的数,howmany为删除的个数,若 howmany 小于等于 0,则不删除。
③三个参数splice(index ,howmany , item1, …, itemX )
Ⅰ.index >0 时
(1. howmany 为 0 时 不删除只添加 —— 在index位置前添加item1, …, itemX的数
(2. howmany > 0 删除且添加 —— 删除从index位置开始的数,howmany为删除的个数,并且在index位置前添加item1, …, itemX的数
Ⅱ.index <0 时
最后一个数为 -1 依次倒数第二个数为-2
(1. howmany 为 0 时 不删除只添加 —— 在-index位置前添加item1, …, itemX的数
(2. howmany > 0 删除且添加 —— 删除从-index位置开始的数,howmany为删除的个数,并且在-index位置前(相当于往后 -2前是 -1)添加item1, …, itemX的数
二、不改变原数组的方法
1. concat()
合并数组
①let arrayAll = array1.concat(array2);
②let arrayAll = array1.concat(array2,"hello",1,0);
③let arrayAll = array1.concat("hello",1,0);
2. join()
数组转字符串,let array =[6,"join","o"]
①let string= array .join(), string为"6joino"
②let string= array .join(','), string为"6,join,o"
3. slice()
截取数组,let array=[1,2,3,4,5]
①array.slice(begin, end),begin
开始位置的索引(从0开始),end结束位置的索引(但该位置的元素本身不包括在内)。begin
起始索引和end结束索引都可以为负数,表示从数组末尾开始计数。结束索引可以大于数组的长度,slice()
会在数组的末尾截断。array.slice(1, 4)为[2,3,4]。
②复制整个数组:let arr = array.slice()。
4. indexOf()
从左往右检查数组中是否存在某个值,可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到返回-1,对大小写敏感。array.indexOf(item,start),item 必须,查找的元素
start 可选。
5. lastIndexOf()
从右往左检查数组中是否存在某个值,返回第一次出现的位置。
三、ES6新增的数组的方法
以下介绍的数组方法,find()、forEach()、filter()、map()、every()、some()、都必传回调函数这里对函数参数进行一个统一说明,用find()为例:
array.find(function(currentValue, index, arr),thisValue)
callback也就是unction(currentValue, index, arr):必须。为数组中每个元素执行的函数,该函数接受三个参数:
1)currentValue:必须。数组中正在处理的当前元素。
2)index:可选。当前元素的索引值。
3)arr:可选。当前元素所在的数组对象。
thisValue:可选。传递给函数的值一般用 “this” 值。如果这个参数为空, “undefined” 会传递给 “this” 值
1.find()
获取数组中满足条件的第一个数值,如果没有符合条件的元素,则返回undefined
①使用方法,例如查找大于一的数字:
let arr1 = [1, 2, 3, 4, 5];
let num = arr1.find(item => item > 1);
console.log(num) //输出的结果是2
2.forEach()
循环遍历数组,按升序为数组中含有效值的每一项执行一次callback函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上)。没有办法中止或者跳出forEach()循环,除了抛出一个异常。
3.filter()
过滤数组,筛选出符合要求的对象。这个方法不会直接改变原数组,它会创建一个新数组,其中包含通过给定函数实现的测试的所有元素。如果需要修改原数组,可以使用 filter
方法后跟 slice()
方法或者使用 forEach
循环等。
①使用 slice() 获取新数组:numbers = numbers.filter(number => number % 2 === 0).slice();
4.map()
映射数组。这个方法会创建一个新数组,这个新数组的元素是回调函数执行的结果。map()
方法对数组中的每个元素执行一次提供的函数,不改变原数组。
①const squares = numbers.map(num => num * num);
5.every()
判断数组中所有的数值是否都满足设置的条件, 它也不会改变原始数组。所有元素全都满足筛选条件返回true,否则false。
6.some()
判断数组中是否有满足条件的,它也不会改变原始数组。some()方法会依次执行数组中的每个元素,直到找到一个使得条件成立的元素。如果找到了这样的元素 ,some() 方法会立即返回true,表示数组中至少有一个元素满足条件。否则,如果没有任何元素满足条件,则返回false。
7.reduce()
对数组中的每个元素执行一个提供的reducer函数(升序执行),将其结果汇总为单个输出值。
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数:
callback
:执行数组中的每个值的函数,包含四个参数:
accumulator
:累加器,即上一次调用回调返回的值,默认为数组中的第一个值
currentValue
:数组中当前被处理的元素。
index
:可选,当前元素在数组中的索引。
array
:可选,调用reduce的数组。
initialValue
:作为第一次调用callback的第一个参数。
使用 reduce 计算数组中所有数字的总和:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 输出:15
8.fill()
用于将一个固定值替换数组的元素。
array.fill(value, start, end)
value | 必需。填充的值。 |
start | 可选。开始填充位置。 |
end | 可选。停止填充位置 (默认为 array.length) |
填充 "Runoob" 到数组的最后两个元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.fill("Runoob", 2, 4);
输出结果:
Banana,Orange,Runoob,Runoob