欢迎来到天天文库
浏览记录
ID:30747510
大小:53.50 KB
页数:5页
时间:2019-01-03
《7个去伪存真的javascript面试题_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、7个去伪存真的JavaScript面试题下面这7个JavaScript面试问题是你应该在面试前先问的。否则,很有可能会浪费你的时间。1.创建JavaScript对象的两种方法是什么?这是一个非常简单的问题,如果你用过JavaSwipt的话。你至少得知道一种方法。但是,尽管如此,根据我的经验,也有很多自称是JavaScript程序员的人说不知道如何回答这个问题。•使用“new”关键字来调用函数。•open/dose花括号。varo={};你也可以继续捉问,“使用new关键字,什么情况下创建对象?”但是,由于我只是想淘汰一些人,所以这些问题我会等到真正面试的时候去问。2•如何创建数组?这和“如
2、何创建对象”是相同级别的问题。然而,也冇一些人回答得了第一个问题,却不能回答这个问题。用下而的代码,简简单单就能创建一个数组:varmyArray=newArray();创建数组是一个很复杂的过程。但是我希望能从应聘者口屮听到使用方括号的答案。varmyArray=[];当然,我们述可以继续问其他问题,比如如何高效地删除JavaScript数组中的重复元素等,但是由于我们只需要知道应聘人员是否值得进一步的观察,关于数组的问题我会到此结束。再來针对如何高效地删除JavaScript数组中的重复元素说一说:js如何实现数组去重整理出5种方法。具体的方法介绍:1)•遍历数组法最简单的去重方法,实
3、现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下://最简单数组去重法functionuniquel(array){varn二[];//一个新的临时数组〃遍丿力当前数组for(vari=0;i4、是否支持indexOf,indexOf为ecmaScript5新方法IE8以下(包括TE8,TE8只支持部分ecma5)不支持if(!Array.prototypc.indexOf){//新增indexOf方法Array.prototype.indexOf=function(item){varresult二-1,aitem二null;if(this,length二二0){returnresult;}for(vari=0,len二this.1ength;i5、lt;}}1)・对象键值对法该方法执行的速度比其他任何方法都快,就是占用的内存大一些;实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新壇该键并放入新数组。注意点:判断是否为js对象键时,会自动对传入的键执行“toStringO”,不同的键可能会被误认为一样;例如:a[l]、a[丫]。解决上述问题还是得调用“indexOf”。//速度最快,占空间最多(空间换吋间)functionunique2(array){varn二{},r=[],len二array.length,val,type;for(vari=0;i6、val=array[i];type二typeofval;if(!n[val]){n[val]=[type];r.push(val);}elseif(n[val].indexOf(type)<0){n[val].push(type);r.push(val);}}returnr;}1)•数组下标判断法还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。functionunique3(array){varn=[array[0]];//结果数组〃从第二项开始遍历for(vari=1;i<7、array.lcngth;i++){〃如果当前数组的第i项在当前数组屮第一次出现的位置不是i,〃那么表示笫i项是重复的,忽略掉。否则存入结果数组if(array.indexOf(array[i])二二i)n.push(array[i]);}rcturnn;}2)•排序后相邻去除法虽然原牛数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历吋新
4、是否支持indexOf,indexOf为ecmaScript5新方法IE8以下(包括TE8,TE8只支持部分ecma5)不支持if(!Array.prototypc.indexOf){//新增indexOf方法Array.prototype.indexOf=function(item){varresult二-1,aitem二null;if(this,length二二0){returnresult;}for(vari=0,len二this.1ength;i5、lt;}}1)・对象键值对法该方法执行的速度比其他任何方法都快,就是占用的内存大一些;实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新壇该键并放入新数组。注意点:判断是否为js对象键时,会自动对传入的键执行“toStringO”,不同的键可能会被误认为一样;例如:a[l]、a[丫]。解决上述问题还是得调用“indexOf”。//速度最快,占空间最多(空间换吋间)functionunique2(array){varn二{},r=[],len二array.length,val,type;for(vari=0;i6、val=array[i];type二typeofval;if(!n[val]){n[val]=[type];r.push(val);}elseif(n[val].indexOf(type)<0){n[val].push(type);r.push(val);}}returnr;}1)•数组下标判断法还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。functionunique3(array){varn=[array[0]];//结果数组〃从第二项开始遍历for(vari=1;i<7、array.lcngth;i++){〃如果当前数组的第i项在当前数组屮第一次出现的位置不是i,〃那么表示笫i项是重复的,忽略掉。否则存入结果数组if(array.indexOf(array[i])二二i)n.push(array[i]);}rcturnn;}2)•排序后相邻去除法虽然原牛数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历吋新
5、lt;}}1)・对象键值对法该方法执行的速度比其他任何方法都快,就是占用的内存大一些;实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新壇该键并放入新数组。注意点:判断是否为js对象键时,会自动对传入的键执行“toStringO”,不同的键可能会被误认为一样;例如:a[l]、a[丫]。解决上述问题还是得调用“indexOf”。//速度最快,占空间最多(空间换吋间)functionunique2(array){varn二{},r=[],len二array.length,val,type;for(vari=0;i6、val=array[i];type二typeofval;if(!n[val]){n[val]=[type];r.push(val);}elseif(n[val].indexOf(type)<0){n[val].push(type);r.push(val);}}returnr;}1)•数组下标判断法还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。functionunique3(array){varn=[array[0]];//结果数组〃从第二项开始遍历for(vari=1;i<7、array.lcngth;i++){〃如果当前数组的第i项在当前数组屮第一次出现的位置不是i,〃那么表示笫i项是重复的,忽略掉。否则存入结果数组if(array.indexOf(array[i])二二i)n.push(array[i]);}rcturnn;}2)•排序后相邻去除法虽然原牛数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历吋新
6、val=array[i];type二typeofval;if(!n[val]){n[val]=[type];r.push(val);}elseif(n[val].indexOf(type)<0){n[val].push(type);r.push(val);}}returnr;}1)•数组下标判断法还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。functionunique3(array){varn=[array[0]];//结果数组〃从第二项开始遍历for(vari=1;i<
7、array.lcngth;i++){〃如果当前数组的第i项在当前数组屮第一次出现的位置不是i,〃那么表示笫i项是重复的,忽略掉。否则存入结果数组if(array.indexOf(array[i])二二i)n.push(array[i]);}rcturnn;}2)•排序后相邻去除法虽然原牛数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历吋新
此文档下载收益归作者所有