数组方法详解
Posted 水星记_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组方法详解相关的知识,希望对你有一定的参考价值。
前言
在前端开发中,避免不了会对一些数组进行操作,实际上也有很多操作数组的方法可以供我们使用,本篇文章将系统化介绍常用操作数组的方法、使用说明以及使用的实例。
1. push()
push() 方法可以向数组的末尾添加一个或多个元素,并返回新的数组长度。
参数 | 描述 |
---|---|
参数1 | 必须。要添加到数组的第一个元素。 |
参数2 | 非必须。要添加到数组的第二个元素。 |
参数3 | 非必须。可以添加多个元素到数组中。 |
实例
let array = ['小红', '小黄', '小兰']; //原数组长度 3
array.push('小绿');
console.log(array); //['小红', '小黄', '小兰', '小绿']
console.log(array.length); //添加后数组长度 4
2. unshift()
unshift() 方法可以向数组的开头添加一个或更多元素,并返回新的数组长度。
参数 | 描述 |
---|---|
参数1,参数2, …, 参数999 | 可选。向数组起始位置添加一个或者多个元素。 |
实例
let array = ['小红', '小黄', '小兰']; //原数组长度 3
array.unshift('小绿');
console.log(array); //['小绿', '小红', '小黄', '小兰']
console.log(array.length); //添加后数组长度 4
3. pop()
pop() 方法用于删除数组的最后一个元素,并返回删除的元素,pop()方法会改变数组的长度。
实例
let array = ['小红', '小黄', '小兰', '小绿']; //原数组长度 4
array.pop();
console.log(array); //['小红', '小黄', '小兰']
console.log(array.length); //删除后数组长度 3
4. shift()
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值,shift()方法会改变数组的长度。
实例
let array = ['小红', '小黄', '小兰', '小绿']; //原数组长度 4
array.shift();
console.log(array); //['小黄', '小兰', '小绿']
console.log(array.length); //删除后数组长度 3
5. splice()
splice() 方法用于添加或删除数组中的元素,如果仅删除一个元素,则返回一个元素的数组,如果未删除任何元素,则返回空数组,splice()方法会改变原始数组。
参数 | 描述 |
---|---|
参数1 | 必须。从索引值(i)开始删除元素,必须是数字。 |
参数2 | 可选。要删除多少元素,必须是数字,但可以是0,如果不写,则删除从索引值(i)开始到原数组结尾的所有元素。 |
实例1
let array = ['小红', '小黄', '小兰', '小绿'];
array.splice(0,1);
console.log(array); // ['小黄', '小兰', '小绿']
此外,splice() 方法还可用于在数组的某个位置添加一个或多个元素。
实例2
let array = ['小红', '小黄', '小兰'];
array.splice(1,0,'小绿');// 在索引1的位置,添加1个元素
console.log(array); // ['小红', '小绿', '小黄', '小兰']
6. join()
join() 方法用于把数组中的所有元素转换一个字符串,元素是通过指定的分隔符进行分隔的。
参数 | 描述 |
---|---|
参数 | 可选。指定要使用的分隔符,如果省略该参数,则使用逗号作为分隔符。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let str = array.join();
console.log(str); // 小红,小黄,小兰,小绿
7. toString()
toString() 方法可以把数组转换为字符串,并返回结果。
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let str = array.toString();
console.log(str); // 小红,小黄,小兰,小绿
8. split()
split() 方法用于把一个字符串分割成字符串数组,split()方法不会改变原始字符串。
实例
let str = '123456';
let array = str.split('');
console.log(array); // ['1', '2', '3', '4', '5', '6']
9. sort()
sort() 方法用于对数组的元素进行排序,默认排序顺序为按字母升序,sort()方法会改变原始数组。
实例1
let array = ['yi','er','san','si','wu','liu'];
let row = array.sort();
console.log(row); // ['er', 'liu', 'san', 'si', 'wu', 'yi']
注意: 当数字进行排序时, “40” 会排在 “5” 的前面,所以必须通过一个函数作为参数来调用,通过函数指定数字是按照升序还是降序排列。
实例2
let array = ['40','5','1','7','2','9'];
let row = array.sort(function(a,b)return a-b);
console.log(row); // ['1', '2', '5', '7', '9', '40']
10. slice()
slice() 方法可以从数组中选定想要元素并返回,slice()方法不会改变原始数组。
参数 | 描述 |
---|---|
参数1 | 可选。开始选取值。如果为负数,则表示从原数组中的倒数第几个元素开始提取。 |
参数2 | 可选。结束选取值。如果省略,将选择从开始位置到数组末尾的所有元素,使用负数从数组末尾进行选择。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let ext = array.slice(1,3);
console.log(ext); // ['小黄', '小兰']
11. forEach()
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素所属的数组对象。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
array.forEach((item,index,arr)=>
console.log(item); // 小红 小黄 小兰 小绿
console.log(index); // 0 1 2 3
console.log(arr); // ['小红', '小黄', '小兰', '小绿']
)
12. map()
map() 方法用于返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素的值。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素属于的数组对象。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
array.map((item,index,arr)=>
console.log(item); // 小红 小黄 小兰 小绿
console.log(index); // 0 1 2 3
console.log(arr); // ['小红', '小黄', '小兰', '小绿']
)
13. concat()
concat() 方法用于连接两个或多个数组,concat()方法不会改变现有的数组。
参数 | 描述 |
---|---|
参数 | 必须。该参数可以是具体的值,也可以是数组对象,可以是任意多个。 |
实例
let array = ['小红', '小黄'];
let mer = array.concat(['小兰'],['小绿'])
console.log(mer); // ['小红', '小黄', '小兰', '小绿']
14. reverse()
reverse() 方法用于颠倒数组中元素的顺序。
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let ups = array.reverse();
console.log(ups); // ['小绿', '小兰', '小黄', '小红']
15. filter()
filter() 方法通过检查指定数组中符合条件的所有元素,filter()方法不会改变原始数组。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素的值。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素属于的数组对象。 |
实例
let array = [ id: 1, name: "小红" , id: 2, name: "小黄" , id: 3, name: "小兰" , id: 4, name: "小绿" ,];
let fil = array.filter((item) => item.id != 1); // 查找数组中id不等于1的对象
console.log(fil); // [id: 2, name: '小黄',id: 3, name: '小兰',id: 4, name: '小绿']
16. indexOf()
indexOf() 方法可以返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到匹配的字符串则返回 -1。
参数 | 描述 |
---|---|
参数1 | 必须。要查找的字符串的值(e)。 |
参数2 | 可选。整数。在字符串的第几个位置(5)开始查找字符(e)第一次出现的位置,如省略该参数,则将从字符串的首字符开始检索。 |
实例1
var str = 'Hello world, welcome to the universe';
var det = str.indexOf('e', 5); // 在字符串第五个位置开始查找字符'e'第一次出现的位置
console.log(det); // 14
实例2
var str = 'SF4636135122323412';
if (str.indexOf('SF') > -1) //提取出来包含'SF'的字符
console.log('执行操作');
17. every()
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供),如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测;如果所有元素都满足条件,则返回true;every()方法不会改变原始数组。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素的值。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素属于的数组对象。 |
实例
let arr = [1, 2, 3, 4, 5, 6, 7];
let wrong = arr.every((value, index) => value < 4);
console.log(wrong); // false
let pair = arr.every((value, index) => value < 8);
console.log(pair); // true
18. some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供),如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测;如果没有满足条件的元素,则返回false;some()方法不会改变原始数组。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素的值。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素属于的数组对象。 |
实例
let arr = [1, 2, 3, 4, 5, 6, 7];
let pair = arr.some((value, index) => value < 4);
console.log(pair); // true
let wrong = arr.some((value, index) => value > 8);
console.log(wrong); // false
19. find()
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。当数组中的元素在测试条件时返回true时, find()方法返回符合条件的元素,之后的值不会再调用执行函数。如果没有符合条件的元素返回undefined, find()方法并没有改变数组的原始值。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素所属的数组对象。 |
实例
let arr = [1, 2, 3, 4, 5, 6, 7];
let pair = arr.find((value, index, array) => value > 5);
console.log(pair); // 6
20. findIndex()
findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置,当数组中的元素在测试条件时返回true时, findIndex()方法返回符合条件的元素的索引位置,之后的值不会再调用执行函数,如果没有符合条件的元素返回 -1,findIndex()方法不会改变数组的原始值。
参数 | 描述 |
---|---|
参数1 | 必须。当前元素。 |
参数2 | 可选。当前元素的索引值。 |
参数3 | 可选。当前元素所属的数组对象。 |
实例
let arr = [1, 2, 3, 4, 5, 6, 7];
let pair = arr.findIndex((value, index) => value > 6);
console.log(pair); // 6
21. includes()
includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回true,反之返回false。
includes()与indexOf()的区别:
- indexOf() 返回的是数值,而includes() 返回的是布尔值;
- indexOf() 不能判断NaN,返回为-1,includes() 则可以判断。
参数 | 描述 |
---|---|
参数1 | 必须。需要查找的元素值。 |
参数2 | 可选。从索引几开始查找,默认为 0。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let obj = array.includes('小黄');
console.log(obj); // true
22. copyWithin()
copyWithin() 方法用于从数组的指定位置拷贝元素到数组的另一个指定位置中。
参数 | 描述 |
---|---|
参数1 | 必须。索引从该位置开始替换数组项。 |
参数2 | 可选。元素复制的起始位置。 |
参数3 | 可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let obj = array.copyWithin(2,0);
console.log(obj); // ['小红', '小黄', '小红', '小黄']
23. fill()
fill() 方法用于将一个固定值替换数组的元素。
参数 | 描述 |
---|---|
参数1 | 必须。要填充的值。 |
参数2 | 可选。开始填充索引位置。 |
参数3 | 可选。停止填充索引位置 (默认为 array.length)。 |
实例
let array = ['小红', '小黄', '小兰', '小绿'];
let obj = array.fill('小蓝');
console.log(obj); // ['小蓝', '小蓝', '小蓝', '小蓝']
24. lastIndexOf()
lastIndexOf() 方法和indexOf()方法一样,区别在于lastIndexOf()方法是从后往前找。
参数 | 描述 |
---|---|
参数1 | 必须。要查找的字符串值。 |
参数2 | 可选。整数。在字符串的第几个位置开始查找字符第一次出现的位置,如省略该参数,则将从字符串的最后一个字符处开始检索。 |
实例
let arr = [2,5,8,6,7,1,4]
let str = arr.lastIndexOf(6);
console.log(str); // 3
let obj = arr.lastIndexOf(9);
console.log(obj); // -1
25. isArray()
isArray() 方法用于判断一个对象是否为数组,如果对象是数组返回true,否则返回false。
参数 | 描述 |
---|---|
参数 | 必须,要判断的对象。 |
实例
let array = ['小红', '小黄', '小兰','小绿'];
let obj = Array.isArray(array)
console.log(obj); // true
26. reduce()
reduce() 方法接收一个函数作为累加器,数组中的每个值 (从左到右) 开始缩减,最终计算为一个值。
参数 | 描述 |
---|---|
参数1 | 必须。初始值, 或者计算结束后的返回值。 |
参数2 | 必须。当前元素。 |
参数3 | 可选。当前元素的索引。 |
参数4 | 可选。当前元素所属的数组对象。 |
实例
let array = [1,5,2,1,3];
let obj = array.reduce((preValue, curValue) =>
preValue + curValue
);
console.log(obj); // 12
27. reduceRight()
reduceRight() 方法的功能和reduce()方法功能是一样的,不同的是reduceRight()方法从数组的末尾向前将数组中的数组项做累加。
参数 | 描述 |
---|---|
参数1 | 必须。初始值, 或者计算结束后的返回值。 |
参数2 | 必须。当前元素。 |
参数3 | 可选。当前元素的索引。 |
参数4 | 可选。当前元素所属的数组对象。 |
实例
let array = [1,5,2,1,3];
let obj = array.reduceRight((preValue, curValue) =>
preValue + curValue
);
console.log(obj); // 12
28. from()
from() 方法用于将伪数组变成数组,只要有length属性的就可以转成数组。如果对象是数组返回true,否则返回false。
参数 | 描述 |
---|---|
参数1 | 必须,要转换为数组的对象。 |
参数2 | 可选,数组中每个元素要调用的函数。 |
参数3 | 可选,映射函数(mapFunction)中的this对象。 |
实例
let str = '123456';
let array = Array.from(str);
console.log(array); // ['1', '2', '3', '4', '5', '6']
29. keys()
keys() 方法用于从数组创建一个包含数组键的可迭代对象,如果对象是数组返回true,否则返回false。
实例
let array = ['1', '2', '3', '4', '5', '6'];
let obj = Object.keys(array);
console.log(obj); // ['0', '1', '2', '3', '4', '5']
30. entries()
entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对(key/value),迭代对象中数组的索引值作为key,数组元素作为 value。
实例
let obj = name: "小红", age: 18, sex: "女" ;
let str = Object.entries(obj);
console.log(str); // ['name', '小红'] ['age', 18] ['sex', '女']
以上是关于数组方法详解的主要内容,如果未能解决你的问题,请参考以下文章