zoukankan      html  css  js  c++  java
  • js 数组&字符串 去重

    Array.prototype.unique1 = function()
    {
    	var n = []; //一个新的临时数组
    	for(var i = 0; i < this.length; i++) //遍历当前数组
    	{
    		//如果当前数组的第i已经保存进了临时数组,那么跳过,
    		//否则把当前项push到临时数组里面
    		if (n.indexOf(this[i]) == -1) n.push(this[i]);
    	}
    	return n;
    }
    Array.prototype.unique2 = function()
    {
    	var n = {},r=[]; //n为hash表,r为临时数组
    	for(var i = 0; i < this.length; i++) //遍历当前数组
    	{
    		if (!n[this[i]]) //如果hash表中没有当前项
    		{
    			n[this[i]] = true; //存入hash表
    			r.push(this[i]); //把当前数组的当前项push到临时数组里面
    		}
    	}
    	return r;
    }
    Array.prototype.unique3 = function()
    {
    	var n = [this[0]]; //结果数组
    	for(var i = 1; i < this.length; i++) //从第二项开始遍历
    	{
    		//如果当前数组的第i项在当前数组中第一次出现的位置不是i,
    		//那么表示第i项是重复的,忽略掉。否则存入结果数组
    		if (this.indexOf(this[i]) == i) n.push(this[i]);
    	}
    	return n;
    }
    Array.prototype.unique4 = function()
    {
      this.sort();	//先排序
      var res = [this[0]]; //结果数组   for(var i = 1; i < this.length; i++) //从第二项开始遍历   {
        //先将原数组进行排序;检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置;有一定的局限性,去重结果也是排序的。
        if (this[i] !== res[res.length-1]) res.push(this[i]);   }   return res; }
    第1种和第3种方法都用到了数组的indexOf方法。此方法的目的是寻找存入参数在数组中第一次出现的位置。很显然,js引擎在实现这个方法的时候会遍历数组直到找到目标为止。所以此函数会浪费掉很多时间。 而第2中方法用的是hash表。把已经出现过的通过下标的形式存入一个object内。下标的引用要比用indexOf搜索数组快的多。但是内存占用方面应该第二种方法比较多,因为多了一个hash表。这就是所谓的空间换时间。
    第二种方法可以通过typeof再做细点;不然 new Number("1") 和 1 区分不了

    /* 冒泡排序 */
    function bubbleSort(arr){
      var len = arr.length;var d;
      for(var i = 0;i < len;i++){
        for(var j = 0; j < len;j++){
          if(arr[i] < arr[j]){
            d = arr[j];arr[j] = arr[i];arr[i] = d;
          }
        }
      }
      return arr;
    }

    字符串去重

    1、先转化为数组:"aabbcccdd".split("")

    2、正则:"aabbcccdd".replace(/(.)(?=.*1)/g,"")


    参考:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277
  • 相关阅读:
    osg模型部分节点旋转
    IFC数据模型构件控制
    自定义基于IFC数据的施工进度数据结构
    QDateTime QString
    Qt获取屏幕分辨率
    Qt自定义类重写 copy
    removeEntry
    initGanttView
    IfcAxis2Placement3D IFC构件的位置和方向
    致我最爱的你
  • 原文地址:https://www.cnblogs.com/chenlogin/p/4731497.html
Copyright © 2011-2022 走看看