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

几个实用的Javascript数组实用的原型扩展方法(唯一|交集|合并|去重)

 
阅读更多

 

/*--数组扩展方法--*/
/*
*去除数组中的重复项
*/
Array.prototype.unique = function()
{
	 var a = []; var l = this.length; 
	 for (var i = 0; i < l; i++) 
	 { 
	 	for (var j = i + 1; j < l; j++)
	  	{ 
	  		if (this[i] === this[j]) j = ++i; 
	  	} 
		a.push(this[i]); 
	} 
	return a; 
};   
// Usage : var uniqueA = [1,2,3,3,5,5,3,7]; var uniqueResult = uniqueA.unique(); // uniqueResult = [1, 2, 5, 3, 7];

/*
*获取数组的交集需要有unique方法支持
*/
Array.prototype.intersect = function()
{
	if (!arguments.length) return []; 
	var a1 = this; var a = a2 = null; 
	var n = 0; 
	while (n < arguments.length) 
	{ 
		a = []; a2 = arguments[n]; var l = a1.length; var l2 = a2.length; 
		for (var i = 0; i < l; i++) 
		{ 
			for (var j = 0; j < l2; j++) 
			{ 
				if (a1[i] === a2[j]) a.push(a1[i]); 
			} 
		} 
		a1 = a; n++; 
	} 
	return a.unique(); 
};
// Usage : var intersectA = [1,2,3]; var intersectB = [2,3,4]; var intersectC = [3,4,5]; var intersectResult = intersectA.intersect(intersectB,intersectC); // intersectResult = [3];

/*
*判断是否为数组
*/
function isArray(a){
	return a.constructor === Array ? true : false; 
}
// Usage : var isArrayA = [3]; var isArrayB = 3; var isArrayResultA = isArray(isArrayA); //true var isArrayResultB = isArray(isArrayB); //false

/*
*获取数组中不相同的元素
*/
Array.prototype.diff = function(){
	var a1 = this; 
	var a = a2 = null; 
	var n = 0; 
	while (n < arguments.length) 
	{ 
		a = []; a2 = arguments[n]; 
		var l = a1.length; 
		var l2 = a2.length; 
		var diff = true; 
		for (var i = 0; i < l; i++) 
		{ 
			for (var j = 0; j < l2; j++) 
			{ 
				if (a1[i] === a2[j]) 
				{ 
					diff = false; break; 
				} 
			} 
			diff ? a.push(a1[i]) : diff = true; 
		} 
		a1 = a; n++; 
	} 
	return a.unique(); 
};
// Usage : var diffA = [1,2,3]; var diffB = [2,3,4]; var diffResult = diffA.diff(diffB); // diff = [1];
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics