数组的常用方法笔记(二)
1. concat()
concat()会在当前数组尾部连接两个或多个数组,返回一个新数组,并且原数组保持不变。
const arr = [1, 2, 3, 4, 5]
const arr1 = arr.concat([6, 7, 8])
console.log(arr1, arr1); // [1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr, arr); // [1,2,3,4,5] 原数组不变
ps: 字符串的concat用法基本相似
2.join()
join() 方法用于把数组中的所有元素放入一个字符串,并返回该字符串,元素是通过指定的分隔符进行分隔的。不传值则默认逗号隔开,原数组不变。
const arr = [1, 2, 3, 4, 5]
const str = arr.join()
const str1 = arr.join('->')
console.log('str', str); // 1,2,3,4,5 不传值则默认逗号隔开
console.log('str1', str1); // 1->2->3->4->5 传入'->'则以该符号隔开
console.log('arr', arr); // [1, 2, 3, 4, 5] 原数组不变
3.toString()
join() 方法用于将数组转化成字符串,并返回该字符串,逗号隔开,且原数组不变
const arr = [1, 2, 3, 4, 5]
const str = arr.toString()
console.log('str', str); // 1,2,3,4,5 不传值则默认逗号隔开
console.log('arr', arr); // [1, 2, 3, 4, 5] 原数组不变
ps: join() 和toString() 的区别在于join可以设置指定连接字符,如果join()函数内部参数为空,则join()等价于toString()。
4. reverse()
reverse() 方法用于翻转原数组,并返回已完成翻转的数组,原数组改变。
const arr = [1, 2, 3, 4, 5]
const arr1 = arr.reverse()
console.log('arr', arr); // [5,4,3,2,1] 原数组改变
console.log('arr1', arr1); // [5,4,3,2,1] 返回翻转的数组
ps: 该方法会改变原来的数组,而不会创建新的数组
5. sort()
sort() 方法用于数组的排序,默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的;如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
比较函数应该具有两个参数 a 和 b
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
const arr = [1, 100, 5, 20]
console.log(arr.sort()); // [1, 100, 20, 5] 默认数组以字符编码的顺序进行排序
const arr1 = arr.sort((a, b) => a - b)
console.log('arr1', arr1); // [1, 5, 20, 100] 数组升序排列
const arr2 = arr.sort((a, b) => b - a)
console.log('arr2', arr2); // [100, 20, 5, 1] 数组降序排列
ps: 请注意,数组已原地排序,并且不进行复制。
6.indexOf()
indexOf() 方法用于在数组中寻找该元素,找到则返回其下标,找不到则返回-1。
const arr = [1, 2, 3, 4, 5]
const arr1 = arr.indexOf(4)
const arr2 = arr.indexOf(6)
console.log('arr1', arr1); // 3 返回找到的元素的下标
console.log('arr2', arr2); // -1 找不到则返回-1
ps: 数组的 indexOf()方法是不会进行隐式类型转换的,也就是说Array.prototype.indexOf() 底层代码在实现的时候使用的是强等于=== 严格比较,而字符串的indexOf()方法会进行隐式类型转换,即String.prototype.indexOf() 底层代码在实现的时候使用的是==进行比较判断。
7. includes()
includes() 方法同样用于在数组中寻找该元素,找到则返回true,找不到则返回false。
const arr = [1, 2, 3, 4, 5]
const arr1 = arr.indexOf(4)
const arr2 = arr.indexOf(6)
console.log('arr1', arr1); // true 找到则返回true
console.log('arr2', arr2); // false 找不到则返回false