很多校招题是没有严格的标准答案的,只有知识点,只要几个关键点能答上来,不管程序是否真的能跑通,都可以拿分的。比如最常见的一道题:
试题:
有这样一个数组,成员都是数字,例如
var a = [1,2,3,4,5,2,3,4,6,7,8];
请实现a.distinct()方法,用来给数组a去掉重复值,要求对Array的原型进行扩展方法,并尽可能做到效率最优。
考察点:
1,考察应试者是否理解原型链
2,考察应试者是否由意识的控制算法的时间复杂度,了解应试者对专业课知识的掌握程度
3,考察应试者对js数组函数的了解程度
答案1:
Array.prototype.distinct = function(){
var a = [],b=[],oa = this.concat();// 将原来数据赋值给oa数组
for(var i = 1;i<oa.length;i++){
for(var j = 0;j<i;j++){
if(b.indexOf(j)>-1)continue;//如过下表j在数组b中跳出当前循环
if(oa[j] == oa[ i]){
b.push(j);
}
}
}
this.splice(0,this.length);//将原数组清空成为空数组
for(var i = 0;i<oa.length;i++){
if(b.indexOf(i)>-1) continue;
this.push(oa[i ]);
}
return this;
};
答案2:
Array.prototype.distinct = function(){
for(var i = 0;i<this.length;i++){
var n = this[i ];
this.splice(i,1,null);
if(this.indexOf(n) < 0){
this.splice(i,1,n);//不存在重复
}else{
this.splice(i,1);//存在重复
}
}
return this;
};
答案3:
Array.prototype.distinct = function(){
var self = this;
var _a = this.concat().sort();
_a.sort(function(a,b){
if(a == b){
var n = self.indexOf(a);
self.splice(n,1);
}
});
return self;
};
得分点:
1,应试者起码应该自觉通过Array.prototype.distince来实现函数,若没有这样做,则扣分50%
2,应试者起码会给出答案1,得分30%,如果没有使用splice和concate,扣分20%
3,给出答案2的,得分80%,算法复杂度控制在O(n)
4,给出答案3的,得满分,算法复杂度控制在O(1)
其他方法:
<SCRIPT LANGUAGE="JavaScript">
Array.prototype.deleteEle=function(){
var arr=this,o={},newArr=[],i,n;
for( i=0;i<arr.length;i++){
n=arr[i]+typeof(arr[i]);//如果不需要类型判断,直接将后面的去掉即可
if(typeof(o[n])==="undefined"){
newArr[newArr.length]=arr[i]
o[n]=1;//缓存
}
}
return newArr;
}
var x= [1,2,3,4,5,2,3,4,6,7,8];
document.write('原始数组:'+x);
document.write("<br />");
document.write('去重复后:'+x.deleteEle());
Array.prototype.distinct=function(){
var a=[],b=[];
for(var prop in this){
var d = this[prop];
if (d===a[prop]) continue; //防止循环到prototype
if (b[d]!=1){
a.push(d);
b[d]=1;
}
}
return a;
}
var x=['a','b','c','d','b','a','e','a','b','c','d','b','a','e'];
document.write('原始数组:'+x);
document.write("<br />");
document.write('去重复后:'+x.distinct());
</script>
分享到:
相关推荐
在日常开发中,我们可能会遇到将一个数组中里面的重复值去除,那么,我就将我自己所学习到的几种方法分享出来 去除数组重复值方法: 1,利用indexOf()方法去除 思路:创建一个新数组,然后循环要去重的数组,...
JavaScript数组的`filter()`方法可以创建一个新的数组,其中包含通过所提供函数实现的测试的所有元素。我们可以利用这个特性来过滤掉重复的元素。 ```javascript let arr = [1, 2, 2, 3, 4, 4, 5]; let ...
非常不多说,js数组去掉重复数据的代码如下所示: var arr = [1,2,3,4,5,6,1,6,7,2]; var newArr = []; for(var i =0;i<arr.length-1;i++){ if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } ...
此外,本文还提到了一些扩展阅读资源,包括《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结...
在JavaScript中,处理数组去重是一个常见的编程任务,...总的来说,JavaScript提供多种去除数组重复值的方法,每种方法都有其适用场景。开发者需要根据实际情况,结合性能、可读性和数据类型等因素,选择最合适的方法。
通过上述三种方法的介绍和比较,我们可以了解到JavaScript数组去重的基本实现思路和各自的方法优缺点。在实际的项目开发中,可以根据数组的具体情况选择合适的去重方法,以达到性能最优和代码简洁的平衡。同时,通过...
1. **转换对象**:将数组的元素作为对象的键,这样就利用了JavaScript对象的特性——键的唯一性,自动去除了重复的值。 2. **还原数组**:遍历这个对象,将所有的键(不重复的元素)重新构造成一个新的数组。 这种...
总结起来,去除JavaScript数组中的重复项有多种策略,包括常规模式、利用`sort()`函数以及利用JSON对象。每种方法都有其适用场景,开发人员应根据实际需求选择最适合的方法。在处理大量数据时,推荐使用利用JSON对象...
在JavaScript中删除二维数组中重复的元素 在JavaScript中,删除二维数组中重复的元素是一种常见的需求。二维数组是一种复杂的数据结构,它由多个一维数组组成,每个一维数组可以包含不同的元素。在实际应用中,我们...
本篇文章将重点讲解四种不同的JS实现方法来去除数组中的重复数据。这些方法各有优劣,适用于不同的场景,下面逐一详细介绍。 1. **速度最快算法:对象键值对法** 这种方法利用JavaScript对象的特性,将数组元素...
//两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i < arr1.length; i++) { for (var j = 0; j < arr2.length; j++) { if (arr1[i] === arr2[j]) { arr1.splice(i, 1); //利用...
本文将介绍几种有效的方法来去除数组中的重复值,这些方法各有优劣,适用于不同的场景。 1. **删除后面重复的(ov1)**: 这种方法通过双重循环实现,外层循环遍历数组元素,内层循环从当前元素的下一个开始,如果...
重复元素在数组中可能会导致数据冗余,降低程序效率,因此移除数组中的重复元素成为了JavaScript编程中的一个重要技巧。 JavaScript提供了多种方法来移除数组中的重复元素,常见的方法包括使用ES6的新特性如`Set`...
需要注意的是,每个单独的数组里不应该有重复值,如果有的话,可以事先去除。耗时问题也是一个需要考虑的重要方面,特别是在数据量巨大时,算法效率的高低直接影响到程序的性能。 本案例提供了一段源代码,源代码中...
在JavaScript中,合并两个数组并去除重复项是一个常见的任务,特别是在处理数据集合或者组合不同来源的数据时。这里我们将深入探讨几种不同的方法来实现这个功能。 首先,我们可以使用`concat()`方法来合并两个数组...
在JavaScript中,去除数组中的重复值是一个常见的需求。数组去重可以提升数据...总而言之,JavaScript数组去重是数据处理中常见且基础的操作,合理选择去重方法能有效提升数据处理效率,尤其是在处理大规模数据集时。
如前面文章JS实现的数组去除重复数据算法小结中就总结分析了4种实现方法。这里介绍一种高效数组去重的方法:根据JS对象的特性去除数组中重复项的方法。 一、JS对象的特性(本文中所使用的特性):key始终唯一 引例:...
在JavaScript中,合并两个数组并去除重复项是一个常见的需求,尤其是在处理用户输入、数据整合或者数据处理时。本文将详细阐述如何使用JavaScript来实现这一功能,并介绍相关的数组处理技巧。 首先,要合并两个数组...