web前端开发js程序代码常见的面试题

⭐️⭐️⭐️ 作者:船长在船上
🚩🚩🚩 主页:来访地址船长在船上的博客
🔨🔨🔨 简介:资深前端开发工程师,专注前端开发,欢迎咨询交流,共同学习

🔔🔔🔔 感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!如有疑问可以留言、评论,看到后会及时回复。

在这里插入图片描述

1.从0生成到指定值的数字数组

const getArr = (startNum,endNum) =>{
    let arr = [];
    for(i=startNum;i<=endNum;i++){
        arr.push(i)
    }
    return arr;
}
console.log("1.从0生成到指定值的数字数组",getArr(1,2));

输出:[ 1, 2 ]

2.获取数组的最大值

const getArrMaxVal = (arr)=>{
    return Math.max(...arr);
}
console.log("2.获取数组的最大值",getArrMaxVal([0,1,3,4,5,10]));

输出: 10

3.获取数组的最小值

const getArrMinVal = (arr)=>{
    return Math.min(...arr);
}
console.log("3.获取数组的最小值",getArrMinVal([0,1,3,4,5,10]));

输出: 0

4.数组去重1

const removeArrEqual = (arr)=>{
    const result = arr.filter((item,index,self)=>{
        // indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置
        // console.log(self.indexOf(item))0113455
        return self.indexOf(item) === index;
    })
    return result;
}
console.log("4.数组去重1",removeArrEqual([1,2,2,3,4,5,5]));

输出: [ 1, 2, 3, 4, 5 ]

4.数组去重2

const removeEqualSuper = (arr)=>{
    const setArr = new Set(arr);
    const result = Array.from(setArr);
    return result;
}
console.log("4.数组去重2",removeEqualSuper([1,2,2,3,4,5,5]));

输出:[ 1, 2, 3, 4, 5 ]

5.斐波那契数列

斐波那契数列,又称黄金分割数列
像0,1,1,2,3,5,8…
在数学上,斐波那契数列被一下递推的方式定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
常用的计算斐波那契数列的方法分为两大类:循环和递归。

const fibonacci = (n)=>{
   let fibArr = [];
   let i =0;
   while(i<n){
       if(i<=1){
           fibArr.push(i)
       }else{
           fibArr.push(fibArr[i-1] + fibArr[i-2])
       }
       i++;
   }
   return fibArr;
}
console.log("5.斐波那契数列1",fibonacci(7));

输出: [0, 1, 1, 2,3, 5, 8]

6.递归

求斐波那契数列0,1,1,2,3,5,8,13,21,34…第n项

const fib = (num)=>{
   if(num<2){
       return num;
   }
   return fib(num-1)+fib(num-2);
}
console.log("6.递归方法求斐波那契数列第n项",fib(9));

输出:34

动态规划

const fibSuper = (item) =>{
    if(item<2){
        return item;
    }
    const numArr = [0,1];
    for(let i =0; i<=item; i++){
        numArr.push(numArr[0]+numArr[1]);
        numArr.splice(0,1);
    }
    return numArr[1];
}
console.log("6.动态规划方法求斐波那契数列第N项",fibSuper(8));

输出:55

7.找出正数组的最大差值

const getMaxProfit = (arr)=>{
    let maxProfit = 0;
    let minVal = arr[0];
    for(var i =0; i <arr.length; i++){
        const currentVal = arr[i];
        minVal = Math.min(minVal,currentVal);
        const temp = currentVal-minVal;
        maxProfit = Math.max(maxProfit,temp);
    }
    return maxProfit;
}
console.log("7.正数组的最大差值",getMaxProfit([1,4,5,10,3,2]));//10 , 1

输出:9

8.数组冒泡排序

const arrSort = (arr)=>{
    for(let i = 0; i<arr.length; i++){
        for(j=0; j<arr.length-1; j++){
            if(arr[j+1]<arr[j]){
                let temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
console.log("8.数组冒泡排序",arrSort([1,4,5,10,3,2]));

输出:[ 1, 2, 3, 4, 5, 10 ]

9.数组交集

const arrIntersection = (arr1,arr2)=>{
    const result = arr1.filter(item1=>arr2.some(item2=>item1===item2));
    return result;
}
console.log("9.数组交集",arrIntersection([1,2,3],[2,3,4,5,6]));

输出:[ 2, 3 ]

10.数组补集

const arrComplement = (arr1,arr2)=>{
    const result = arr2.filter(item2=>arr1.every(item1=>item1!==item2));
    return result;
}
console.log("10.数组补集",arrComplement([1,2,3],[2,3,4,5,6]));

输出:[ 4, 5, 6 ]

11.数组并集

const arrMerge = (arr1,arr2)=>{
    const result = arr1.concat(arr2.filter(item2=>arr1.every(item1=>item1!==item2)));
    return result;
}
console.log("11.数组并集",arrMerge([1,2,3],[2,3,4,5,6]));

输出:[ 1, 2, 3, 4, 5, 6 ]

12.数组结构加工

const data= [{key:‘name’,value:‘jeck’},{key:‘age’,value:20}]
实现一个函数processFn根据对应的key,value生成对象
const res = {name:“jeck”,age:20}

const processFn = (data)=>{
   const result = {};
   for(let i =0; i<data.length; i++){
       const {key,value} = data[i];
       result[key] = value;
   }
   return result;
}
const data = [
   {key:'name',value:'jeck'},
   {key:'age',value:20}
];
console.log("12.数组结构加工",processFn(data));

输出:{ name: ‘jeck’, age: 20 }

13.数组求和

const arrSum = (arr)=>{
    const temp = arr.reduce((pre,now)=>{
        return pre+now;
    },0);
    return temp;
}
console.log("13.数组求和",arrSum([1,2,5]));

输出:8

14.计算数组中重复的元素以及个数

输出例如:{A:2}

const arrRepeatMap = (arr)=>{
   let obj = {};
   arr.map((temp,i)=>{
       let item = arr[i];
       obj[item] =  (obj[item]+1) || 1;
   });
   return obj;
}
console.log("14.1计算数组中重复的元素以及个数",arrRepeatMap(["A","A","B","C","C","D"]));

输出:{ A: 2, B: 1, C: 2, D: 1 }

或者

const arrRepeatFor = (arr)=>{
    let obj = {};
    for(let i = 0; i <arr.length; i++){
        let item = arr[i];
        obj[item] = (obj[item]+1)||1
    }
    return obj;
}
console.log("14.2计算数组中重复的元素以及个数",arrRepeatFor(["A","A","B","C","C","D"]));

输出:{ A: 2, B: 1, C: 2, D: 1 }

15.经典面试题

		let arr = [];

		for (let i = 0; i < 2; i++) {
			arr[i] = function () {
				console.log(i);
			}
		}

		arr[0]();//0
		arr[1]();//1

​ 👉👉👉 欢迎来访船长在船上的博客,如有疑问可以留言、评论,看到后会及时回复。

🚩后面会继续记录前端面试题,持续更新;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

船长在船上

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值