数组置空
第一种:
let arr = [1,2,3]
arr = []
/*
这种方法虽然可以清空数组 但是只是将arr引用到空数组中 而如果有依赖于这个arr的变量的话
这个变量不会受影响 还是等于arr=[] 之前的值 这就意味着这个arr先前的值还存放在内存中
当数据量比较大时 就会导致内存泄漏
*/
第二种:
let arr=[1,2,3]
arr.length=0
/*
这种方法可以解决 第一种方法带来的内存泄漏问题 它是直接彻底清空arr数据的内容,
先前依赖于arr数据的内容也会一并消失。
*/
数组头部插入数据
第一种:
// 可以使用JS提供的 unshift() 方法
let arr =[1,2,3]
arr.unshift('插入头部')
console.log(arr) // 结果为 ['插入头部',1,2,3]
第二种:
// 可以使用JS提供的 concat() 数据合并方法 此方法如果考虑性能优化的话 就可以使用这种
let arr=[1,2,3]
arr= ['头部'].concat(arr)
console.log(arr) // 结果为 ['头部',1,2,3]
数组尾部插入数据
第一种:
// 可以使用JS提供的 push() 方法
let arr=[1,2,3]
arr.push(4)
console.log(arr) // 结果为 [1,2,3,4]
第二种:
/* 可以利用最简单的数组长度比数组下标大1的原理 来当做它的下标
它比push方法运行速度稍微快些 */
let arr=[1,2,3]
arr[arr.length]=4
console.log(arr) // 结果为[1,2,3,4]
数组去重
/*
可以利用 new Set() 它可以将目标对象里的值给取出 它取出的值是唯一的
它返回的是一个对象 可以用Array.from()来将这个对象 转化为数组
*/
let arr=[1,1,2,2,3,4,5,5]
console.log(Array.from(new Set(arr))) //结果为 [1,2,3,4,5]
// 如果不用Array.from()的话
console.log(new Set(arr)) // 结果为 {1,2,3,4,5}
复制数组
/*
可以利用扩展运算符 实现数组的复制 值得注意的是 扩展运算符的使用是深拷贝还是浅拷贝
是要看数据源的数据类型,如果只是一层数组或对象,其里面的元素也是简单数据类型的元素时,
就是深拷贝
*/
let arr=['1','2','3']
let test=[...arr]
console.log(test) //结果为 ['1','2','3']
// 也可以将数组转为对象 会把数组的下标当作对象的key(键)值
let obj={...arr}
console.log(obj) // 结果为 {0:'1',1:'2',2:'3'}
合并数组
// 一、可以用concat()来合并
let arr1=[1,2,3,4]
let arr2=[4,5,6,7]
let arr3= arr1.concat(arr2)
console.log(arr3) // 结果为 [1,2,3,4,4,5,6]
// 二、可以用扩展运算符(...)来合并
console.log([...arr1,...arr2]) // 结果为 [1,2,3,4,4,5,6]
// 想去重复值的话就需要用到上面说的 new Set()
console.log(Array.from(new Set([...arr1,...arr2])))
// 结果为 [1,2,3,4,5,6,7]
数组交集
/*
数据交集 也就是说两个或多个数组共同有得值
早期得时候需要用两个for循环来比较值来完成 比较难受
但现在可以利用 filter() 和 includes() 来实现
incudes() 就是 查看某个元素是否在目标对象上存在
*/
let arr1 =[1,3,5]
let arr2=[1,2,4]
let arr3 = arr1.filter((item)=> arr2.includes(item) )
console.log(arr3) // 结果为 [1]
获取数组得随机值
// 使用 Math.floor() 和 Math.random()
let arr1= ['张三', '李四', '王五', '找六', '张三']
console.log(arr1[Math.floor(Math.random() * (arr1.length))]) // 第一次随机得结果为: 张三
获取元素在数组中最后出现的下标
let arr = ['张三', '李四', '王五', '找六', '张三']
console.log(arr.lastIndexOf('张三')) // => 4
数组反转
let arr=[1,2,3,4]
console.log(arr.reverse()) // [4,3,2,1]
去除数组中的虚假值
// JS中虚假值有:false、0、''、null、NaN、undefined、-0
let arr = ['小明', '小蓝', '', false, ' ', undefined, null, 0, NaN, true]
console.log(arr.filter(Boolean)) // 结果为 ['小明', '小蓝', ' ', true]
数组求和
// 可以使用reduce() 这个数组的方法
let arr = [1, 2, 3, 4]
console.log(arr.reduce((a, b) => a + b),0) // 结果为 10