携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
大家好,我是大帅子,今天给大家讲一下伪数组转成真实数组的几种方式吧
概括
首先我们要搞懂伪数组是个啥,伪数组其实就是有真实数组的一样的 下标
长度
元素
梨子: 下面就是一个伪数组有三要素
let obj = {
0:100,
1:80,
2:60,
3:70,
4:50,
5:30,
length:6
}
1.循环
缺点就是要用循环,代码太长,观赏性不高
for (let i = 0; i < obj.length; i++) {
arr.push(obj[i])
}
console.log(arr)
2.利用push可以传递多个参数的特点
缺点就是如果要传递多个参数代码冗余
let arr = []
arr.push(obj[0],obj[1],obj[2],obj[3],obj[4],obj[5])
console.log(arr)
3. 利用apply可以传递多个参数的特点
目前的最优解,简单,观赏性高
let arr = []
arr.push.apply(arr,obj)
console.log(arr)
小需求
说是迟那时快,项目经理来了一句,小伙子我看你骨骼惊奇,来我们在不转真实数组的情况下面,怎么进行数组的排序呢? 数组还是之前的那个数组
let obj = {
0:100,
1:80,
2:60,
3:70,
4:50,
5:30,
length:6
}
1. apply
首先我们还是会惯性的想到这个,这似乎是目前的最优解是吧
let arr = []
arr.push.apply(arr,obj)
arr.sort((a,b)=>a-b)
2. 数组的原型
来,大家跟着我的思路来,首先我们应该知道我们js的作者是把数组的方法封装到了原型里面,所有我们不要那么刻板嘛~ 我们直接可以通过调用原型来解决
Array.prototype
你们看我们这不轻松拿下
但是我们目前出现了第二个难题
我们如果用原型去调用sort的话,我们的this指向就指向数组的原型是吧,这个时候我们就应该想到改变this的指向,是吧~ 那我们在脑子里面在过一遍,此时call
肯定就是最优解
Array.prototype.sort.call(obj,(a,b)=>a-b)
console.log(obj)
此时我们就成了, 心里美滋滋,小小项目经理还想跟我斗~ 不过眼光倒是不错~ 哈哈哈
好了,这边已经给大家介绍到这里,以上是我自己的理解,希望可以帮到大家, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏
🐣---->🦅 还需努力!大家一起进步!!!