前端面试笔试题目2020
2023-08-01 09:49:00
来源 : haohaofanwen.com
投稿人 : admin
下面是好好范文网小编收集整理的前端面试笔试题目2020,仅供参考,欢迎大家阅读!
const iptList = document.getElementsByTagName('input')const checkList = let len = iptList.lengthwhile (len--) { if (iptList[len].type === 'checkbox') { checkList.push(iptList[len]) }}console.log(checkList)复制代码
2.已知有字符串 foo=”get-element-by-id” ,写一个 function 将其转化成驼峰表示法”getElementById” 。
//方法一:const foo = 'get-element-by-id'functionformat (str) { const newArr = str.split('-') let len = newArr.lengthwhile (len) { if (len > 1) { const arr = newArr[len - 1].split('') arr.splice(0, 1, arr[0].toUpperCase()) newArr.splice(len - 1, 1, arr.join('')) } len-- } const newStr = newArr.join('') return newStr}format(foo)复制代码
//方法二:const foo = 'get-element-by-id'functiontranslate (res) { const arr = res.split('-') // 以-为分隔符截取字符串,返回数组for (let i = 1; i < arr.length; i++) { arr[i] = arr[i].charAt.toUpperCase() + arr[i].slice(1) } res = arr.join('') // 返回字符串return res}translate(foo)复制代码
3.对给定数组实现倒排
// 方法一const numberArray = [ 3, 6, 2, 4, 1, 5 ]numberArray.reverse()//方法二const numberArray = [ 3, 6, 2, 4, 1, 5 ]const newArr = for (let i = 0; i < numberArray.length; i++) { newArr.unshift(numberArray[i])}复制代码
4.对给定数组实现降序和升序
//实现降序const numberArray = [ 3, 6, 2, 4, 1, 5 ]numberArray.sort((a, b) => { return b - a})//实现降升序// 方法一const numberArray = [ 3, 6, 2, 4, 1, 5 ]numberArray.sort((a, b) => { return a - b})// 方法二 通过冒泡排序实现数组升序const numberArray = [ 3, 6, 2, 4, 1, 5 ]functionBubbleSort (arr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { const tmp = arr[j] arr[j] = arr[i] current = tmp } } } return arr}BubbleSort(numberArray)// 方法三 通过插入排序实现数组排序const numberArray = [ 3, 6, 2, 4, 1, 5 ]functioninsertSort (arr) { for (let i = 1; i < arr.length; i++) { for (let j = i - 1; j >= 0; j--) { if (arr[j + 1] < arr[j]) { const temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp } elseif (arr[j + 1] >= arr[j]) { break } } } return arr}insertSort(numberArray)// 方法四 通过计数排序实现数组排序const numberArray = [ 3, 6, 2, 4, 1, 5 ]functionCountSort (arr) { const obj = for (let i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { obj[arr[i]] = 1 } else { obj[arr[i]]++ } } let index = 0// 遍历对象属性名,按顺序放回覆盖原数组for (const key in obj) { while (obj[key] > 0) { arr[index] = Number(key) obj[key]-- index++ } } return arr}console.log(CountSort(numberArray))复制代码
[参考博客](数组排序多种方法汇总 - 一只看夕阳的猫 - 博客园 ())
将数字 12345678 转化成 RMB 形式 如: 12,345,678
functionformat (num) { // 将数字转换为字符串模式const str = num.toString() // 封装一个字符串翻转函数functionrevStr (str) { return str.split('').reverse().join('') } // 保存翻转后的字符串const newStr = revStr(str) // 定义一个变量用来保存处理后的结果let res = ''// 循环中的i必须是1,否则if条件执行错误for (let i = 1; i <= newStr.length; i++) { res = res + newStr[i - 1] if (i % 3 === 0 && i !== newStr.length) { res = res + ',' } } // 将循环后的结果翻转后返回returnrevStr(res)}format(12345678)复制代码
JavaScript 中如何对一个对象进行深度 clone?
方法一:
functionclone (obj) { // 判断数据类型是不是对象if (typeof obj === 'object') { // 因为数组也属于对象,细分传入的值是不是数组if (obj instanceofArray) { const result = for (let i = 0; i < obj.length; i++) { // 递归调用 result[i] = clone(obj[i]) } return result } else { const result = for (const i in obj) { // 递归调用 result[i] = clone(obj[i]) } return result } } else { return obj }}const obj1 = [ 12, { a: 11, b: 22 }, 5 ]const obj2 = clone(obj1)obj2[1].a += 5console.log(obj1, obj2)复制代码
方法二:
functioncloneObject (obj) { console.log(!obj) // 如果obj有值,就会去判断obj的类型是不是对象,不满足条件直接返回值if (!obj || typeof obj !== 'object') { return obj } // 判断obj是不是数组,从而定义一个初识变量用于保存值const o = obj.constructor === Array ? : // 循环obj中的每一个keyfor (const i in obj) { // 判断obj[i]的值是不是对象,如果是执行递归 o[i] = typeof obj[i] === 'object' ? cloneObject(obj[i]) : obj[i] } return o}const obj1 = [ 12, { a: 11, b: 22 }, 5 ]const obj2 = cloneObject(obj1)obj2[1].a += 5console.log(obj1, obj2)复制代码