JavaScript常见算法面试题
来源:互联网 发布:淘宝童装店铺名 编辑:程序博客网 时间:2024/05/16 02:02
function Fn(){ getFn = function(){ console.log('1'); } return this; } Fn.getFn = function(){ console.log('2'); } Fn.prototype.getFn = function(){ console.log('3'); } var getFn = function(){ console.log('4'); } function getFn(){ console.log('5'); } // 调用函数的方法 Fn.getFn(); //b 2 // 函数预解析, var getFn 和 function getFn(){} 整个被提升了 只留下 getFn=function(){} getFn(); //d 4 // 首先调用了Fn()被执行,执行之后创建了getFn = funciton(){}刷新了55和58行的getFn函数执行内容 Fn().getFn(); //a 1 //因为之前Fn()已经被执行了 getFn已经发生变化了 getFn(); //a 1 // Fn.getFn()是一个整体, new 开头执行整个函数 new Fn.getFn(); //b 2 //同一个()运算符 优先级相同, 从左往右执行 // 首先执行Fn(),得到Foo构造函数的实例对象getFn,由52的prototype.getFn得到结果 new Fn().getFn(); //c 3 // 首先执行new Fn() 得到了 new xxx.getFn() ,接着同上 new new Fn().getFn(); //c 3
//数组去重 var arr = [1,2,3,5,6,9,8,9,5,3,2,10,1,7,4]; function deleteRepetition (arr) { var tmp = {}; var newArr = []; for(var i =0; i < arr.length; i++){ if (!tmp[arr[i]]) { tmp[arr[i]] = true; newArr.push(arr[i]); } } sortArr(newArr); console.log(newArr); } //冒泡排序 function sortArr(arr){ for (var i =0; i < arr.length-1; i++){ for(var j = 0; j < arr.length-1-i; j++){ if (arr[j]>arr[j+1]) { var count = arr[j]; arr[j] = arr[j+1]; arr[j+1] = count; } } } } deleteRepetition(arr);
var cache = new Object(); var mult = function () { // 调用Array内置方法,把传入的参数转化为类数组 var args = Array.prototype.join.call(arguments,','); // console.log(typeof args); //string // 判断cache对象是否有该属性 if (cache[args]) { return cache[args]; } var a = 1; for(var i = 0, l = arguments.length; i < l; i++) { a = a * arguments[i]; } // console.log(typeof cache); return cache[args] = a; } // console.log(mult(1,2,3)); //6 // console.log(mult(4,5,6)); //120 console.log(cache); var url = 'http://www.baidu.com?a=b&c=d&e=123456'; var resulet = new Object(); function toObj() { // var tmp = []; for(let i = 0; i<url.length; i++) { if (url[i] === '?') { // console.log(i); var tmp = url.slice(i+1); // console.log(tmp); } } var newTmp = tmp.split('&'); // var newArr = newTmp.split('='); for(let n in newTmp) { let arr = newTmp[n].split("="); resulet[arr[0]] = arr[1]; } console.log(resulet); } toObj(); //两个数组一一配对成为对象的属性和值 var arr1 = ['wang', 'zhang', 'li']; var arr2 = ['11', '12', '13']; //第一种复杂解法 var result = {}; var arr = []; function toObject() { //第一步 先根据数组的索引值,配对成对象的类型 for(var i = 0; i < arr1.length; i++) { let tmp = arr1[i] + ':' + arr2[i]; arr.push(tmp) } console.log(arr); //第二步 通过split分割字符串组成新的数组 for(let i in arr) { let tmp = arr[i].split(':'); //object["key"] = value 语法 result[tmp[0]] = tmp[1]; } } toObject(); console.log(result); //第二种 简单版 var o = {}; for(let i = 0; i< arr1.length; i++) { o[arr1[i]] = arr2[i]; } console.log(o);
// 找出数组的中重复最多的值, 重复了多少次 var arr = [110, 1, 2, 3, 1, 2, 4, 1, 2, 3, 1, null, 'a', 'a', 'b','a']; function moreRepetition(arr) { var newArr = []; for(var i=0;i<arr.length;i++){ var temp=arr[i]; var count=0; for(var j=0;j<arr.length;j++){ if(arr[j]==temp){ count++; arr[j]=-1; } } if(temp != -1){ newArr.push(temp+":"+count) } } console.log(newArr); return newArr; } moreRepetition(arr); //获取url中 request中的params function GetRequest(url) { var url = url; var theRequest = {}; //获取url中"?"符后的字串 var arr = url.split('?')[1]; // console.log(arr); //通过"&",组成新的数组 var newArr = arr.split('&'); for(var i = 0; i < newArr.length; i++) { var tmp = newArr[i].split('='); theRequest[tmp[0]] = tmp[1]; } console.log(theRequest); return theRequest; } var url = 'https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=93380420_hao_pg&wd=js%E4%BB%8Eurl%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%8F%82%E6%95%B0&oq=amd%2520cmd%2520%25E5%258C%25BA%25E5%2588%25AB&rsv_pq=eb0fff93000563c9&rsv_t=f6444Mx%2FIx%2BNj1MwceBPJuBtcEd1%2FTPHXwOTKu7WjphBcY1PKBNCmAqzRmCl53Ko369jfgak&rqlang=cn&rsv_enter=1&inputT=6228&rsv_sug3=16&rsv_sug1=13&rsv_sug7=100&rsv_sug2=1&prefixsug=js%25E4%25BB%258E&rsp=1&rsv_sug4=6228'; GetRequest(url);
阅读全文
0 0
- JavaScript常见算法面试题
- JavaScript常见算法面试题
- JavaScript常见算法面试题
- JavaScript前端常见算法面试题总结
- JavaScript常见面试题
- Javascript程序员常见面试题
- 分享:JavaScript常见面试题
- 排序算法常见面试题
- 【javascript常见面试题】常见前端面试题及答案
- 一道javascript算法面试题
- 常见算法笔试或面试题
- 常见算法笔试或面试题
- 常见算法笔试或面试题
- 常见算法笔试或面试题
- 常见算法笔试或面试题
- 常见算法笔试或面试题
- 常见算法笔试或面试题
- 常见面试题排序算法(二)
- Burp Suite基础教学 之 安装及环境(Java)的配置
- ARM立即数问题
- Mysql事务级别详解
- poj1061青蛙的约会
- java框架 作业1
- JavaScript常见算法面试题
- android学习---活动的生命周期
- Find a Position in a Genome Minimizing the Skew
- Entity Framework Core 使用HiLo生成主键
- 使用Microsoft.AspNetCore.TestHost进行完整的功能测试
- Html5动画代码
- Map集合
- eclipse打包成可运行.jar文件
- IP分片与重组详解