`
sfgeeq1987
  • 浏览: 19398 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

js数组去除重复方法添加

阅读更多

很多校招题是没有严格的标准答案的,只有知识点,只要几个关键点能答上来,不管程序是否真的能跑通,都可以拿分的。比如最常见的一道题:

试题:
有这样一个数组,成员都是数字,例如
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>
分享到:
评论

相关推荐

    js数组中去除重复值的几种方法

    在日常开发中,我们可能会遇到将一个数组中里面的重复值去除,那么,我就将我自己所学习到的几种方法分享出来  去除数组重复值方法:  1,利用indexOf()方法去除  思路:创建一个新数组,然后循环要去重的数组,...

    JS 去掉数组中重复项

    JavaScript数组的`filter()`方法可以创建一个新的数组,其中包含通过所提供函数实现的测试的所有元素。我们可以利用这个特性来过滤掉重复的元素。 ```javascript let arr = [1, 2, 2, 3, 4, 4, 5]; let ...

    JavaScript几种数组去掉重复值的方法推举_.docx

    在JavaScript中,处理数组去重是一个常见的编程任务,...总的来说,JavaScript提供多种去除数组重复值的方法,每种方法都有其适用场景。开发者需要根据实际情况,结合性能、可读性和数据类型等因素,选择最合适的方法。

    JS查找数组中重复元素的方法详解

    与第一种方法不同,这种方法通过排序和临时数组`tmp`来记录已经出现过的元素,从而避免了重复添加。首先将原数组与自身合并(`concat`),然后使用`sort`方法进行排序。排序后,如果连续的两个元素相等且不在临时...

    JavaScript几种数组去掉重复值的方法推荐

    本文将介绍几种有效的方法来去除数组中的重复值,这些方法各有优劣,适用于不同的场景。 1. **删除后面重复的(ov1)**: 这种方法通过双重循环实现,外层循环遍历数组元素,内层循环从当前元素的下一个开始,如果...

    JS数组去掉重复数据只保留一条的实现代码

    JavaScript数组本身没有提供去除重复元素的方法,因此,我们需要编写代码实现这一功能。接下来,我们将详细探讨几种不同的实现方式,包括基本的遍历方法、使用哈希表优化的方法,以及一些可能遇到的特殊情况处理。 ...

    JS去除数组重复值的五种不同方法

    在JavaScript中,去除数组中的重复值是一个常见的需求。数组去重可以提升数据...总而言之,JavaScript数组去重是数据处理中常见且基础的操作,合理选择去重方法能有效提升数据处理效率,尤其是在处理大规模数据集时。

    javascript数组去掉重复

    通过上述三种方法的介绍和比较,我们可以了解到JavaScript数组去重的基本实现思路和各自的方法优缺点。在实际的项目开发中,可以根据数组的具体情况选择合适的去重方法,以达到性能最优和代码简洁的平衡。同时,通过...

    如何高效率去掉js数组中的重复项

    总结起来,去除JavaScript数组中的重复项有多种策略,包括常规模式、利用`sort()`函数以及利用JSON对象。每种方法都有其适用场景,开发人员应根据实际需求选择最适合的方法。在处理大量数据时,推荐使用利用JSON对象...

    JavaScript合并两个数组并去除重复项的方法

    在JavaScript中,合并两个数组并去除重复项是一个常见的任务,特别是在处理数据集合或者组合不同来源的数据时。这里我们将深入探讨几种不同的方法来实现这个功能。 首先,我们可以使用`concat()`方法来合并两个数组...

    JS实现的数组去除重复数据算法小结

    本篇文章将重点讲解四种不同的JS实现方法来去除数组中的重复数据。这些方法各有优劣,适用于不同的场景,下面逐一详细介绍。 1. **速度最快算法:对象键值对法** 这种方法利用JavaScript对象的特性,将数组元素...

    JavaScript去掉数组重复项的方法分析【测试可用】

    本文实例分析了JavaScript去掉数组重复项的方法。分享给大家供大家参考,具体如下: 利用JavaScript的object的特性,我们可以非常容易的实现将一个数组的重复项去掉。 object的特性是:key一定是唯一的。 把数组重复...

    JavaScript去除数组里重复值的方法

    在JavaScript中,处理数组时,有时我们需要去除其中的重复值以得到一个只包含唯一元素的新数组。本篇文章将深入探讨几种不同的方法来实现这一目标,包括基础方法和更高效的算法。 首先,我们来看标题和描述中提及的...

    javascript过滤数组重复元素的实现方法.docx

    ### JavaScript 过滤数组重复元素的实现方法 #### 背景介绍 在日常的Web开发工作中,我们经常需要处理各种数据结构,其中数组是最常用的数据类型之一。随着项目的复杂度增加,对于数组中可能出现的重复元素进行有效...

    JS求多个数组的重复数据

    需要注意的是,每个单独的数组里不应该有重复值,如果有的话,可以事先去除。耗时问题也是一个需要考虑的重要方面,特别是在数据量巨大时,算法效率的高低直接影响到程序的性能。 本案例提供了一段源代码,源代码中...

    JS简单去除数组中重复项的方法

    在处理JavaScript编程中,数组去重是经常会遇到的需求。处理数组中的重复项可以提高数据处理的效率,尤其是在数据集合较大时,...通过实际编写代码和示例,我们可以更直观地理解JavaScript数组去重的原理和实现方式。

    js 高效去除数组重复元素示例代码.docx

    ### JavaScript 高效去除数组重复元素方法解析 #### 背景与需求 在实际的Web开发中,处理数组是日常任务之一。特别是在处理大量数据时,数组可能会包含重复的元素,这不仅会占用不必要的内存空间,还可能导致逻辑...

Global site tag (gtag.js) - Google Analytics