JS-数组的常用方法(二)

126 阅读3分钟

数组的常用方法笔记(二)

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
  1. 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  2. 若 a 等于 b,则返回 0。
  3. 若 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