数组的方法
数组
什么是数组?
数组就是一组有序数据的集合
数组的定义方法:
语法:
第一种方法:
var Cars=new Array();
Cars[0]="Saab";
Cars[1]="Volvo";
Cars[2]="BMW";
第二种方法:
var Cars=new Array("Saab","Volco","BMW");
第三种方法:
var car=["Saab","Volvo","BMW"];
数组的方法
1、concat()方法
用于连接两个或者多个数组,不会改变原有的数组,仅仅返回被连接的数组
语法:
数组1.concat(数组2,数组3,...,数组n)
返回值:
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的
理解:
就是合并concat方法连接的所有数组,并且依次排序
2、reverse()方法
用于颠倒数组种的元素
语法:
array.reverse()
理解:
对数组种的元素的顺序倒叙排序输出一个新的数组
3、push()方法
向数组的末尾添加一个或更多元素,并返回新的长度
语法:
array.push(添加的元素1, 添加的元素2, ..., 添加的元素n)
理解:
在原数组的末尾添加新的元素,此方法改变数组的长度如果需要添加在前面需要unshift()方法
4、pop()方法
移除最后一个数组元素
语法:
array.pop();
返回值:
返回删除的元素
理解:
删除数组里面最后的元素,并且会返回被删除的元素
5、join()方法
把数组的所有元素放入一个字符串里
语法:
array.join(分隔符号)
分隔符号可选,默认逗号
6、indexOf()方法
搜索数组中的元素,并返回它所在的位置
语法:
array.indexOf(item,start)
返回数组中某个指定的元素位置从,头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。如果在数组中没找到指定元素则返回 -1。
start参数:
规定在数组中开始检索的位置
理解:
查找某个元素在数组种的位置,可以自定义开始检索的开始位置
7、includes()方法
判断一个数组是否包含一个指定的值
语法:
arr.includes(searchElement)
arr.includes(searchElement, fromIndex)
参数:
fromIndex:指的是从该索引处开始查找 需要查找的值
理解:
用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
注意:
如果fromIndex大于数组的长度则返回 false 。该数组不会被搜索。
如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
8、flat()方法
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回
语法:
var newArray = arr.flat([depth])
depth 可选
指定要提取嵌套数组的结构深度,默认值为 1。
取值为 Infinity,可展开任意深度的嵌套数组
返回值
一个包含将数组与子数组中所有元素的新数组。
理解:
推平指定维数的数组,返回一个新的数组
9、findIndex()方法
返回符合传入测试(函数)条件的数组元素索引。、
语法:
array.findIndex(function(currentValue, index, arr), thisValue)
实例:
const array1 = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
console.log(array1.findIndex(isLargeNumber));
//返回3
参数:
currentValue 必需。当前元素
index 可选。当前元素的索引
arr 可选。当前元素所属的数组对
thisValue:可选。 传递给函数的值一般用 “this” 值。
如果这个参数为空, “undefined” 会传递给 “this” 值
返回值:
返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。
注意:
findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
- 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
- 如果没有符合条件的元素返回 -1
理解:
通过函数返回一个查找元素的索引
10、find()方法
返回符合传入测试(函数)条件的数组元素
语法:
array.find(function(currentValue, index, arr),thisValue)
参数:
currentValue 必需。当前元素
index 可选。当前元素的索引
arr 可选。当前元素所属的数组对
thisValue:可选。 传递给函数的值一般用 “this” 值。
如果这个参数为空, “undefined” 会传递给 “this” 值
返回值:
返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
注意:
find() 对于空数组,函数是不会执行的。
find() 并没有改变数组的原始值。
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数
理解:
返回查找复合条件的第一个元素的具体的值
11、shift()方法
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度
语法:
arr.shift()
返回值:
从数组中删除的元素; 如果数组为空则返回undefined
理解:
删除第一个元素,并返回一个新的数组
12、slice()方法
方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变
语法:
arr.slice([begin[, 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 也会一直提取到原数组末尾。
返回值:
一个含有被提取元素的新数组。
理解:
截取开始索引到结束索引的数组元素,结束位置的索引不会被截取并返回
13、sort()方法
sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的
语法:
arr.sort()
理解:
通过UTF-16代码单元值序列对数组元素进行重新排序
14、splice()方法
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容
语法:
arr.splice(要删除的下标, 删除的数量, 替换的元素);
//删除元素
arr.splice(要删除的下标, 删除的数量);
//添加元素
arr.splice(下标, 0, 要添加的元素);
//替换元素
arr.splice(替换的下标,替换的数量,'替换的内容');
理解:
通过参数来进行数组的删除添加和替换
15、unshift()方法
unshift() 方法将一个或多个元素添加到数组的开头
语法:
arr.unshift(element1, ..., elementN)
参数:
要添加到数组开头的元素或多个元素。
理解:
把参入的参数依次添加到数组的开头
16、forEach()方法
forEach() 方法对数组的每个元素执行一次给定的函数
语法:
arr.forEach(function(v, i){
v //数组元素
i //数组索引
});
理解:
数组的遍历
17、map()方法
方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
语法:
array.map(function(currentValue,index,arr), thisValue)
实例:
创建了一个新数组,值为原数组中对应数字的平方根。
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]
map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组。
理解:
执行函数之后的数组
18、filter()方法
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
语法:
array.filter(function(currentValue,index,arr), thisValue)
filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或等价于 true 的值的元素创建一个新数组。callback 只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中
理解:
遍历数组,输出复合函数之后的数组
19、every()方法
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
语法:
array.every(function(currentValue,index,arr), thisValue)
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
理解:
检测数值元素的每个元素是否都符合条件
20.some()方法
some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值
语法:
arr.some(callback(element[, index[, array]])[, thisArg])
callback
用来测试每个元素的函数,接受三个参数:
element
数组中正在处理的元素。
index 可选
数组中正在处理的元素的索引值。
array可选
some()被调用的数组。
thisArg可选
执行 callback 时使用的 this 值。
**注意:**如果用一个空数组进行测试,在任何情况下它返回的都是false
。
理解:
测试数组里至少有一个元素复合条件