Js 数组方法整理
# Array
# 其他
- length 数组中元素的个数
- constructor:返回对创建对象的数组函数的引用(可以用来判断变量是否为数组)
# 方法
arr.push();
描述:向数组末尾追加元素
参数:追加的元素
返回值:修改后的length值
可以追加多个
会修改原数组
arr.unshift();
描述:向数组的开头添加元素
参数:添加的元素
返回值:修改后的length值
可以追加多个
会修改原数组
arr.pop();
描述:删除末尾的元素
参数:无参数
返回值:被删除的元素
会修改原数组
只能删除一个元素
arr.shift();
描述:删除开头的一个元素
参数:无参数
返回值:被删除的元素
同上
arr.splice(位置,删除元素的个数,要追加的元素);
描述:在数组的任意位置上添加删除
参数:第一个参数:操作的元素的位置
第二个参数:删除元素的个数
第三个元素:要追加的元素,可以是多个,所以不止有三个元素
返回值:删除的元素组成的数组
如果单纯添加元素的时候,第二个单数传0
同时删除和添加,先删除后添加
添加或删除包含第一个参数对应下标的元素
修改原数组
arr.join(" ");
描述:使用分隔符将数组数据隔开拼接成字符串
参数:分隔符(连接符)
返回值:已经拼接好的字符串
不修改原数组
arr.slice(截取的起始下标,结束下标);
描述:截取数组
参数:同()
返回值:截取到的数组
截取时,包含起始下标,不包含结束下标
不修改原数组
参数可以是是负数
如果只有一个起始下标参数,代表从起始下标开始截取到最后
arr.concat();
描述:多个数组的连接
参数:拼接的数组
返回值:连接之后的新数组
不修改原数组
类似于:arr = [...arr1,...arr2] ------arr = arr1.concat(arr2);
arr.indexOf(值)
- 描述:查找某个值在数组中的第一次出现的下标
- 返回值:数据的下标,没有找到返回-1
arr.lastIndexOf(值);同上
arr.includes();ES7新加API
描述:用于检查数组是否包含某元素
var arr = [1,2,{name:"张三"}] arr.includes(2) // true arr.includes(4) // false arr.includes({name:"张三"}) // false
1
2
3
4
参数
要索引的值
搜索的开始索引
['a', 'b', 'c', 'd'].includes('b') // true ['a', 'b', 'c', 'd'].includes('b', 1) // true ['a', 'b', 'c', 'd'].includes('b', 2) // false
1
2
3
返回值:包含返回true,否则返回false
- 无法检测对象是否存在
- 假如只想知道某个值是否在数组中而并不关心它的索引位置,建议使用
includes()
。
arr.sort()
描述:数组的排序
参数:if没有参数,则按照字符的编码开始按顺序排序
if有参数,参数必须为一个函数(回调函数)回调函数有两个参数,a,b,a-b正序,b-a倒序
返回值:排序之后的数组
修改原数组
arr.reverse();
描述:数组倒序,将数组翻转
var arr=[1,5,8,6,9,4,2,3]; console.log(arr.reverse()); // (8) [3, 2, 4, 9, 6, 8, 5, 1] console.log(arr); // (8) [3, 2, 4, 9, 6, 8, 5, 1]
1
2
3
返回值:修改后的数组
修改原数组
arr.forEach();
- 描述:遍历数组
- 参数:(val,index)=>{} val:值index:下标
arr.filter();
描述:根据回调函数的返回值对元素进行筛选
- true:元素保留
- false:元素跳过
参数:回调函数
返回值:筛选之后的数组
不修改原数组
arr.map();
描述:将数组中的所有数据按照条件改变,形成新数组
参数:回调函数
返回值:映射改变之后的数组
不修改原数组
arr.some();
描述:判断 根据回调函数的判断条件来选择真假
参数:回调函数
返回值:只要有一个回调函数返回值是true,最终some结果是true
不修改原数组
arr.every();
描述:判断 根据回调函数的判断条件来选择真假(与some比较记忆)
参数:回调函数
返回值:只要有一个回调函数返回值是false,最终every结果是false;
不修改原数组
Array.from();
描述:用于将两类对象转为真正的数组:类似数组的对象和可遍历的对象(包括 ES6 新增的数据结构 Set 和 Map)
var a={length:2,0:'aaa',1:'bbb'}; Array.from(a); //['aaa','bbb'] // 原理:Array.prototype.slice.call(a); var b={length:2}; Array.from(b); //[undefined.undefined]
1
2
3
4
5
Array.of();
描述:用于将一组值,转换为数组。
返回值:总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
Array.of() // [] Array.of(undefined) // [undefined] Array.of(1) // [1] Array.of(1, 2) // [1, 2]
1
2
3
4
Array.fill()
描述:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
参数值:
- value:用来填充数组元素的值,必填。
- start:可选起始索引,默认值为0。
- end:可选终止索引,默认值为
this.length
返回值:修改之后的原数组
改变原数组
// 当传入单个参数的时候,该方法会用该参数的值填充整个数组 var arr1 = new Array(5) console.log(arr1.fill(1)); //[1,1,1,1,1] var arr2 = [1, 2, 3, 4] console.log(arr2.fill(0)); //[0,0,0,0] // 当传入两个参数的时候,第一个参数为填充的元素,第二个为填充元素的起始位置 var arr3 = [0, 1, 2, 3, 4, 5, 6] console.log(arr3.fill(1, 3)); //[0,1,2,1,1,1,1] // 当传入三个参数的时候,第一个参数为填充的元素,第二个参数和第三个参数分别指填充元素的起始和终止位置,不修改终止位置元素 var arr4 = [0, 1, 2, 3, 4, 5] console.log(arr4.fill(1, 3, 5)); //[0,1,2,1,1,5] //如果提供的起始位置或结束位置为负数,则他们会被加上数组的长度来算出最终的位置,例如 起始位置为-1 就相当于array.length-1 var arr5 = [0, 1, 2, 3, 4, 5] console.log(arr5.fill(1, -3));//[0,1,2,1,1,1] var arr6 = [0, 1, 2, 3, 4, 5] console.log(arr6.fill(1, 3, -2));//[0,1,2,1,4,5]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
arr.reduce();
描述:累加器
参数:
- 回调函数
(pre, item, index, arr)=> {}
- 第一个参数:per\total 若规定五个参数则第五个为per,若无规定则为数组第一项
- 第二个参数:item若规定per为数组第一项则item为数组第二项 若设置了第五个参数值 则item为数组第一项
- 第三个参数:item的索引值
- 第四个参数:原数组
- initialValue:初始值
- 回调函数
返回值
回调函数的返回值将会作为下次pre值
累加
arr.reduce((pre, item, index) => { console.log(pre, item, index); return item + pre // 累加 return item * pre // 累乘 }, initialValue)
1
2
3
4
5
整体reduce函数的返回值是最后的pre值,累加结果/累乘结果/。。。