数组去重,排序,重复次数,两个数组合并,两个数组去重

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
	</body>

</html>
<script>
	//数组,冒泡排序,把数组从小到大排序
	function bubbleSort(array) {
		if(Object.prototype.toString.call(array).slice(8, -1) === 'Array') {
			var len = array.length,
				temp;
			for(var i = 0; i < len - 1; i++) {
				for(var j = len - 1; j >= i; j--) {
					if(array[j] < array[j - 1]) {
						temp = array[j];
						array[j] = array[j - 1];
						array[j - 1] = temp;
					}
				}
			}
			return array;
		} else {
			return 'array is not an Array!';
		}
	};
	var arr = [23, 34, 3, 4, 23, 44, 333, 444];
	console.log(bubbleSort(arr));
	//数组,去重
	function unique(arr) {
		var hash = [];
		for(var i = 0; i < arr.length; i++) {
			if(hash.indexOf(arr[i]) == -1) {
				hash.push(arr[i]);
			}
		}
		return hash;
	};
	var arr2 = [2, 8, 5, 0, 5, 2, 6, 7, 2];
	console.log(unique(arr2));
	//数组,数组中出现最多的元素和最多元素的次数,第二多元素和第二多元素的次数
	function aryMore(arr) {
		var i;
		var length = arr.length;
		var hash = []; //使用哈希数组
		for(i = 0; i < length; i++) {
			if(!hash[arr[i]]) hash[arr[i]] = 1; //没有初始化的数组元素为undefined,undefined++为NaN
			else hash[arr[i]]++;
		}
		var max = 0; //最多的次数
		var maxV; //出现最多的元素
		var second = 0; //第二多的次数
		var secondV; //出现第二多的元素
		hash.forEach(function(item, index) { //forEach函数会跳过空元素
			if(item > max) {
				second = max;
				secondV = maxV;
				max = item;
				maxV = index; //用索引来保存原数组的值
			} else if(item > second) {
				second = item;
				secondV = index;
			}
		});
		return {
			max,
			maxV,
			second,
			secondV
		};
	}
	var arr3 = [2, 2, 2, 2, 3, 4, 5, 4, 3, 1, 4, 4, 100, 100];
	console.log(aryMore(arr3));
	//两个数组对比,取出不同的值
	function getArrDifference(arr1, arr2) {
		return arr1.concat(arr2).filter(function(v, i, arr) {
			return arr.indexOf(v) === arr.lastIndexOf(v);
		});
	};
	var arr4 = [0, 1, 2, 3, 4, 5];
	var arr6 = [0, 44, 6, 1, 3, 9];
	console.log(getArrDifference(arr4, arr6));
	//两个数组对比,取出相同的值
	function getArrEqual(arr1, arr2) {
		let newArr = [];
		for(let i = 0; i < arr2.length; i++) {
			for(let j = 0; j < arr1.length; j++) {
				if(arr1[j] === arr2[i]) {
					newArr.push(arr1[j]);
				}
			}
		}
		return newArr;
	}
	var arr7 = [0, 1, 2, 3, 4, 5];
	var arr8 = [0, 4, 6, 1, 33, 9];
	console.log(getArrEqual(arr7, arr8));
	//两个数组,把数组合并,去除相同的值
	//合并两个数组,去重  
	function concatAry(arr1, arr2) {
		//不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响  
		var arr = arr1.concat();
		//或者使用slice()复制,var arr = arr1.slice(0)  
		for(var i = 0; i < arr2.length; i++) {
			arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;
		}
		return arr;
	};
	var arr9 = [0, 1, 2, 3, 4, 5];
	var arr10 = [0, 4, 6, 1, 3, 9];
	console.log(concatAry(arr9, arr10));

	//合并多个数组,去重  
	function concatAryMore(arr1, arr2, arr3) {
		if(arguments.length <= 1) {
			return false;
		}
		var concat_ = function(arr1, arr2) {
			var arr = arr1.concat();
			for(var i = 0; i < arr2.length; i++) {
				arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;
			}
			return arr;
		}
		var result = concat_(arr1, arr2);
		for(var i = 2; i < arguments.length; i++) {
			result = concat_(result, arguments[i]);
		}
		return result;
	};
	var arrMore1 = ['a', 'b'];
	var arrMore2 = ['a', 'c', 'd'];
	var arrMore3 = [1, 'd', undefined, true, null];
	console.log(concatAryMore(arrMore1, arrMore2, arrMore3));
</script>

  

猜你喜欢

转载自www.cnblogs.com/binmengxue/p/10948685.html