JS数组常用方法

这篇博客详细介绍了JavaScript中数组的各种操作方法,包括如何清空数组、在数组头部和尾部插入数据、去重、复制、合并、求交集、获取随机值、查找元素最后出现的下标、反转、去除虚假值以及求和。同时,文章提到了内存管理和性能优化的相关注意事项。
摘要由CSDN通过智能技术生成

数组置空

 第一种:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值