`
qieyi28
  • 浏览: 157606 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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> 
分享到:
评论
1 楼 fxwjsw 2017-04-18  
Array.prototype.distinct = function(){ 
     for(var i =this.length-1;i>-1;i--){ 
         if(this.indexOf(this[i])!=i){ 
             this.splice(i,1);//存在重复 
         }
     } 
     return this; 
}; 

相关推荐

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

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

    JS 去掉数组中重复项

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

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

    非常不多说,js数组去掉重复数据的代码如下所示: var arr = [1,2,3,4,5,6,1,6,7,2]; var newArr = []; for(var i =0;i&lt;arr.length-1;i++){  if(newArr.indexOf(arr[i]) == -1){  newArr.push(arr[i]);  } } ...

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

    此外,本文还提到了一些扩展阅读资源,包括《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结...

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

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

    javascript数组去掉重复

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

    js 巧妙去除数组中的重复项

    1. **转换对象**:将数组的元素作为对象的键,这样就利用了JavaScript对象的特性——键的唯一性,自动去除了重复的值。 2. **还原数组**:遍历这个对象,将所有的键(不重复的元素)重新构造成一个新的数组。 这种...

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

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

    在javascript中,如果删除二维数组中重复的元素

    在JavaScript中删除二维数组中重复的元素 在JavaScript中,删除二维数组中重复的元素是一种常见的需求。二维数组是一种复杂的数据结构,它由多个一维数组组成,每个一维数组可以包含不同的元素。在实际应用中,我们...

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

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

    js 两数组去除重复数值的实例

    //两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i &lt; arr1.length; i++) { for (var j = 0; j &lt; arr2.length; j++) { if (arr1[i] === arr2[j]) { arr1.splice(i, 1); //利用...

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

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

    JavaScript移除数组内重复元素的方法

    重复元素在数组中可能会导致数据冗余,降低程序效率,因此移除数组中的重复元素成为了JavaScript编程中的一个重要技巧。 JavaScript提供了多种方法来移除数组中的重复元素,常见的方法包括使用ES6的新特性如`Set`...

    JS求多个数组的重复数据

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

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

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

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

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

    JS基于对象的特性实现去除数组中重复项功能详解

    如前面文章JS实现的数组去除重复数据算法小结中就总结分析了4种实现方法。这里介绍一种高效数组去重的方法:根据JS对象的特性去除数组中重复项的方法。 一、JS对象的特性(本文中所使用的特性):key始终唯一 引例:...

    JS实现合并两个数组并去除重复项只留一个的方法

    在JavaScript中,合并两个数组并去除重复项是一个常见的需求,尤其是在处理用户输入、数据整合或者数据处理时。本文将详细阐述如何使用JavaScript来实现这一功能,并介绍相关的数组处理技巧。 首先,要合并两个数组...

Global site tag (gtag.js) - Google Analytics