![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
一枚程序鱼
天子呼来不上船,自称臣是码中仙
展开
-
网址分享(保持学习)
前端八股文:🔥 连八股文都不懂还指望在前端混下去么 - 掘金高频前端面试题汇总之CSS篇:「2021」高频前端面试题汇总之CSS篇 - 掘金深入浅出HTTPS工作原理:深入浅出HTTPS工作原理_xinjing_wangtao的博客-CSDN博客_https原理……后续更新中……...原创 2022-03-24 18:20:31 · 813 阅读 · 0 评论 -
计算对象的层数
判断对象里,是否有对象,有的话就递归+1。let obj1 = { a: 1, b: [1, 2, 3, 4], }; const getObjLevel = (obj) => { let level = 1; let objValue = Object.values(obj); for (let i = 0; i < objValue.length; i++) { if (typeof objVa原创 2022-03-24 17:44:53 · 676 阅读 · 0 评论 -
实现destructuringArray方法
说明:实现destructuringArray方法,达到如下效果destructuringArray( [1,[2,4],3], "[a,[b],c]" );result{ a:1, b:2, c:3 }const destructuringArray = (arr, str) => { const handleAfterStr = Array.isArray(str) ? str : JSON.parse(str.replace(/([a-z]+)/g, '"$1"原创 2022-03-24 01:08:39 · 209 阅读 · 0 评论 -
题目:找出数组中第k大和第m大的数字相加之和
说明:实现一个方法,找出数组中第k大和第m大的数字相加之和。示例:let arr=[1,2,4,4,3,5],k=2,m=4;findTopSum(arr,k,m); 第2大的数字是4,出现次数是2次,第4大的数字是2,出现的次数是1次,所以最终结果是10。const findTopSum = (arr, k, m) => { const arr1 = arr; // 排序并去重后的数组 const newArr = Array.from(new原创 2022-03-22 21:30:36 · 566 阅读 · 0 评论 -
题目:请用原型链或者class实现一个计数器,能够实现链式加减乘除。
1.使用原型链方法function myCalculator(num) { this.num = num; } myCalculator.prototype.add = function (n) { this.num = this.num + n return this } myCalculator.prototype.minus = function (n) { this.num = this.num - n原创 2022-03-22 21:23:34 · 634 阅读 · 0 评论 -
封装一个函数,入参分别是,n(表示数组的长度)times(表示相邻项元素的和是奇数的次数),最终要返回一个数组,要返回数组的每一项不能重复,且数组的每一项范围是[1,n].
输入:3,1 ===> 输出: [1,3,2]输入:4,2 ===> 输出:[1,2,4,3]const handleArray = (n, times) => { let arr = []; for (let i = 1; i <= n; i++) { arr.push(i); } let count = 0; for (let j = 0; j < arr.length - 1; j++.原创 2022-03-07 18:26:35 · 198 阅读 · 0 评论 -
封装一个函数,比较两个版本号,如果一致就返回0,前者大于后者就返回1,前者小于后者就返回-1。
例如:输入:0.1,0.1.1 ===> -1输入:0.1,0.1.0 ===> 0输入:0.1.2,0.1.1===> 1思路:首先对传入的字符串进行.分割,然后分别对分割得到的数组进行遍历,判断他们每一项的大小情况。 function compareVersion(version1, version2) { var arr1=version1.split('.') var arr2=version2.split('.')原创 2022-02-20 16:40:43 · 438 阅读 · 0 评论 -
将多维数组转化为一维数组
例如:[1, [2], [3, [4, [5]]]] ===>[1, 2, 3, 4, 5]const array = [1, [2], [3, [4, [5]]]]; function flat(array) { let arr = array.concat().join(',').split(','); let newArr=[]; arr.forEach((v,i)=> { ne...原创 2022-02-20 16:02:45 · 757 阅读 · 0 评论 -
把url后面的参数转化成对象的形式
例如:'?name=feizhu&from=alibaba&job=frontend&extraInfo=%7B%22a%22%3A%22b%22%2C%22c%22%3A%22d%22%7D'===> {name:"feizhu",from:'alibaba',job:'frontend',extraInfo: {a: 'b', c: 'd'}}思路如下:对传入的url进行切割,保留问号后的部分,并且对处理后的数据进行&符号分割。对分割的每一部分进行循环遍历,原创 2022-02-20 15:39:48 · 3473 阅读 · 0 评论 -
封装一个函数,去掉字符串中的下划线,并返回不含下划线且遵循驼峰法命名的字符串。
思路:首先我们对传入的字符串进行判空,存在的话,就以下划线对字符串进行分割,对分割好的字符串(即转化为数组了)进行遍历,对遍历到的每一项进行空字符串分割,并且对分割的第一项进行大写转化,通过三目运算把转化后的大写项插入到对应的位置,把最后的结果放在新数组中,最后把新数组转化为字符串。function snake2camel(str) { // 对字符串“_”进行分割 if (str) { var strArr = str.split('_');.原创 2022-02-20 01:01:14 · 455 阅读 · 0 评论 -
对url中的参数进行提取,并放在对象中,若出现中文编码就编译成中文。
思路都写在注释里面了。 function parseQueryString(url) { // 用于存放属性和属性值 var obj = {}; // 转义中文 var url1 = decodeURIComponent(url); // 找到问号的位置 var index = url1.indexOf('?'); // 找到参数的第一个位置,并截取url?后面的参数 va.原创 2022-02-19 19:57:39 · 352 阅读 · 0 评论 -
判断两个字符串是否相同 只要求相同,不考虑顺序。
思路:判断传入的两个字符串的长度,如果长度不一致就返回false,长度一样的话,就遍历这两个字符串,结合使用charCodeAt方法。charCodeAt该方法是 返回的是Unicode 编码值。利用Unicode 编码值之和来判断两个字符串的是否一致。如果它们Unicode 编码值之和相同说明字符串是相同的,那就返回true,反之就返回false。 const isSame = (str1, str2) => { let CodeAt1 = 0; let CodeAt2原创 2022-02-19 19:42:53 · 1952 阅读 · 2 评论 -
实现一个函数 find,传入一个数组和数字,返回最接近这个数字的所有元素
const find = (arr, num) => { let newArr = []; let arr1 = []; for (let i = 0; i < arr.length; i++) { newArr.push(Math.abs(arr[i] - num)); if (arr.length === newArr.length) { const firstNum = Math.min(...new.原创 2022-02-19 19:34:16 · 1166 阅读 · 1 评论 -
封装一个函数,获取对象的特定层级的数据。
let item = { id: '1', children: [ { id: '2', children: [{ id: '2-1' ,children:[{id: '2-1-1',children:[{id: '2-1-1-1',children:[]}]}]}]}, { id: '3', children: [{ id: '3-1' ,children:[]}]}, .原创 2022-02-19 19:31:43 · 301 阅读 · 0 评论