JavaScript数组去重、排序以及相关基础操作汇总

数组去重方法:

1.indexOf()检测法

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;
}


2.hash表

Array.prototype.myunique = 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;
}

3.比较相邻的两个值
Array.prototype.myunique = function()
{
    this.sort();
    var re=[this[0]];
    for(var i = 1; i < this.length; i++)
    {
        if( this[i] !== re[re.length-1])
        {
            re.push(this[i]);
        }
    }
    return re;
}


排序算法:

1.快速排序法 该方法看的阮一峰老师的博客 思路非常清晰 适合初学者学习

思路: a.在数据集中选取一个元素作为"基准" 可以是任何一个元素 当然最好不是第一个和最后一个 我们一般选取中间的一个 Math.floor(arr.length/2);

b.所有小于“基准”的都放到左边,大于“基准”的都放到右边

c.对“基准”左右两边的子集重复执行a,b两步,即递归;直到所有子集只剩下一个元素为止;

d.将“基准”和左右两边的子集合并为一个数组即可;

function quickSort(arr){
		if(arr.length<=1) return arr; //确定数组长度
		var pivotIndex = Math.floor(arr.length/2);//选取基准索引
		var pivot = arr.splice(pivotIndex,1)[0];//选取基准
		
		var left=[],right=[];
		for(var i=0,len=arr.length;i<len;i++){
			if(arr[i]<pivot){
				left.push(arr[i]);//将小于“基准”的放到左边
			}else{
				right.push(arr[i]);//将大于“基准”的放到右边
			}
		}
		
		
		return quickSort(left).concat([pivot],quickSort(right));//递归合并
	}


基础知识:

1.函数内置参数数组对象 arguments

function sum(a,b,c){
		var len = arguments.length,s=0;
		for(var i=0;i<len;i++){
			s+=arguments[i];
		}
		return s;	
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值