收集的一些web前端面试笔试题笔试(答案)
2020-01-12 22:15
435 查看
这些题在笔试中出现的概率比较大(陆续补充中)
数组去重
//数组去重 遍历数组 数组区中方法有很多种 es6 提供了 new Set 也可以去重
function unique(arr){ var newarr = [] for(var i = 0; i<arr.length; i++){ if(newarr.indexOf(arr[i]) == -1){ // indexOf newarr.push(arr[i]) } } return newarr }
赋值
var a = {n:1} var b = a a.x = a = {n:2} console.log(a.x) // undefined console.log(b.x) // n:2
去除数组中指定的项
//去除数组中指定的项 var arr = [1, 2, 2, 3, 4, 2, 2] function removeWithoutCopy(arr, item) { for(var i = 0 ; i< arr.length;i++){ if(arr[i] == item) { arr.splice(i,1) i-- } } return arr }
变量提升 函数最优先
var b = 10; (function b(){ // 变量提升 函数优先级最高 b = 20 console.log(b) // f b(){console.log(b)} })()
柯里化函数
function a(x){ reutrn function (y){ return x+y } }
a(1)(2) //柯里化函数可以实现参数复用 而不用一次一次重新传入
// 柯里化函数面试题(可以了解一下)
// 实现一个add方法,使计算结果能够满足如下预期:
add(1)(2)(3) = 6;
add(1, 2, 3)(4) = 10;
add(1)(2)(3)(4)(5) = 15;
function add() { // 第一次执行时,定义一个数组专门用来存储所有的参数 var _args = Array.prototype.slice.call(arguments); // 在内部声明一个函数,利用闭包的特性保存_args并收集所有的参数值 var _adder = function() { _args.push(...arguments); return _adder; }; // 利用toString隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回 _adder.toString = function () { return _args.reduce(function (a, b) { return a + b; }); } return _adder; }
add(1)(2)(3) // 6
add(1, 2, 3)(4) // 10
add(1)(2)(3)(4)(5) // 15
add(2, 6)(1) // 9
call apply bind 区别
// call apply bind 区别
call 和 apply,bind 都是改变this 指向 call apply 只是传入参数方式不同 都是直接执行, bind则是返回一个函数,需要手动执行
obj.call(null,arg1,arg2,arg3)
obj.apply(null,[arg1,arg2,arg3])
obj.bind(null, ‘arg1’)
对象的深度克隆
//对象的深度克隆
function clone(Obj) { var buf; if (Obj instanceof Array) { buf = []; //创建一个空的数组 var i = Obj.length; while (i--) { buf[i] = clone(Obj[i]); } return buf; }else if (Obj instanceof Object){ buf = {}; //创建一个空对象 for (var k in Obj) { //为这个对象添加新的属性 buf[k] = clone(Obj[k]); } return buf; }else{ return Obj; } } 先写这么多后边陆续会补充面试中所遇到的面试 欢迎大家留言 最后有一道题 [1,2,3].map(parseInt) // 返回结果是什么?可以考虑一下哦
promise封装简单的请求
function getData (url) { let promise = new Promise((resolve,reject) => { // 创建ajax // 1. 创建 XMLHttp var xmlHttp = new XMLHttpRequest() // 2. 监听发送 xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { // 成功 resolve(xmlHttp.responseText) } else { // 失败 reject('请求失败') } } } // 3. 获取url xmlHttp.open("GET",url) xmlHttp.send() }) return promise }
原文链接:https://blog.csdn.net/qq_40411946/article/details/89842145
统计出现次数最多的字符
var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i)]){ json[str.charAt(i)] = 1; }else{ json[str.charAt(i)]++; } }; var iMax = 0; var iIndex = ''; for(var i in json){ if(json[i]>iMax){ iMax = json[i]; iIndex = i; } } console.log('出现次数最多的是:'+iIndex+'出现'+iMax+'次');
统计素组中出现次数最多的元素
var arr = [3, 5, 6, 5, 9, 8, 10, 5, 7, 7, 10, 7, 7, 7, 7, 10, 10, 10, 10, 10] function findMost (arr) { if (!arr.length) return; if (arr.length === 1) return 1; let res = {}; let maxName, maxNum = 0 // 遍历数组 arr.forEach((item) => { if(res[item]) { res[item] +=1 } else { res[item] = 1 } console.log(res[item]) if (res[item] > maxNum) { maxName = item maxNum = res[item] } }) return '出现次数最多的元素为:' + maxName + ', 出现次数为:' + maxNum; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 2018最新Web前端经典面试试题及答案 JavaScript面试题
- 腾讯web前端笔试题及个人答案
- Web前端面试题目及答案汇总
- 一些前端开发的笔试题及答案(期待更好的答案)
- Web前端面试题目记答案汇总
- 这篇文章挺有意思 关于如何自学web前端以及一些面试的经验分享
- Web前端开发笔试&面试_04
- web前端开发工程师笔试题及答案(二)
- 移动Web 开发中的一些前端知识收集汇总
- Web前端面试笔试题2——JS(1):函数调用(局部变量/全局变量)
- 慕课网:Web前端面试题目及答案汇总
- Web前端面试题目及答案汇总
- Web前端笔试115道题(带答案及解析)
- 2018最新Web前端经典面试试题及答案
- Web 前端面试题目及答案汇总
- 关于Web前端开发,附:(百度web前端笔试面试题目)
- Web前端开发笔试&面试_02(others)
- 秋招前端笔试面试的一些知识点
- Web前端开发面试题集及答案
- Web前端开发笔试&面试_01(mi:)