2024年面试常客之数组扁平化(手撕代码篇),mysql的索引面试

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

html5

let arr3 = [1,2,3,[4,5],[6,7,[8,9]]]

有时候我们需要将这些数组转化成一维数组,这个过程就叫做数组扁平化。

以下就是几种常见的数组扁平化的方法:

1、递归法

思想:遍历数组,判断数组的某项是否还是数组,如果不是,直接放入新数组里面,如果该项是数组,则继续将该项的数组进行遍历,递归调用同样的方法,将结果与上层结果进行拼接。

//定义一个数组扁平化函数

function flatten(arr){

var res = []

for(var i=0; i<arr.length; i++){

if(Array.isArray(arr[i])){ //判断数组里面的项是否还是数组

res = res.concat(flatten(arr[i])) //如果是,递归执行扁平化函数

}else{

res.push(arr[i]) //如果不是,则将该项放入新数组中

}

}

return res

}

let arr = [1,2,3,[4,5],[6,7,[8,9]]]

let res = flatten(arr)

console.log(res)

2、ES6扩展运算符(…)

扩展运算符可以对数组进行展开,如

let arr = [1,2,3,4,5]

console.log(…arr) //1,2,3,4,5

根据这个思想,我们可以对多维数组进行一层层展开,如

let arr = [1,2,3,4,[5,6]]

console.log(…arr) //展开最外层 1 2 3 4 [5,6]

每使用一次扩展运算符,会展开一层,这样我们可以多次使用,使得数组里面的数组全部展开。

tips:some()方法是判断数组中的某一项是否满足某个条件,有一个条件满足,则返回true。

function flatten(arr){

while(arr.some(item => Array.isArray(item))){

console.log(arr) //控制台打印,看每一步的结构

arr = [].concat(…arr)

}

return arr

总结

三套“算法宝典”

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

28天读完349页,这份阿里面试通关手册,助我闯进字节跳动

算法刷题LeetCode中文版(为例)

人与人存在很大的不同,我们都拥有各自的目标,在一线城市漂泊的我偶尔也会羡慕在老家踏踏实实开开心心养老的人,但是我深刻知道自己想要的是一年比一年有进步。

最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!

由于篇幅有限,下篇的面试技术攻克篇只能够展示出部分的面试题,详细完整版以及答案解析,有需要的可以关注

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值