JS数组排序和数组去重

JS数组排序

1.sort()方法排序:以字母顺序对数组进行排序

var array=[9, 88, 67, 24, 39, 74, 28];
		array.sort((a, b) => {
			return a - b //升序排列
		});
		console.log(array);

 2.冒泡排序

var arr=[9, 88, 67, 24, 39, 74, 28];
		//两层for循环分别表示当前项与第二项
		for (var j = 0; j < arr.length - 1; j++) {
			for (var i = 0; i < arr.length - 1 - j; i++) { 
			//两两比较,如果前一个比后一个大,则交换位置。
				if (arr[i] > arr[i + 1]) {
					var num = arr[i];
					arr[i] = arr[i + 1];
					arr[i + 1] = num;
				}
			}
		}
		console.log(arr);

3.选择排序:选出最小值然后放在后面,与冒泡排序类似

var arr=[9, 88, 67, 24, 39, 74, 28];
		for (var i = 0; i < arr.length; i++) {
			for (var j = i + 1; j < arr.length; j++) {
				//如果第二项是最小值就交换,否则继续比较
				if (arr[i] > arr[j]) {
					var num = arr[i];
					arr[i] = arr[j];
					arr[j] = num;
				}
			}
		}
		console.log(arr);

4.快速排序:递归思想,两边快速的排序,冒泡排序的改进

        var array = [9, 88, 67, 24, 39, 74, 28];
		function quickSort(arr) {
			//如果数组长度小于1,则返回数组
			if (arr.length <= 1) {
				return arr;
			}
			//定义中间值的索引
			var index = Math.floor(arr.length / 2); //Math.floor()方法是向下取整,返回小于或等于一个给定数字的最大整数。
			//取到中间值
			var median = arr.splice(index, 1); //splice(索引,要删除的项目数量,新增) 方法向/从数组中添加/删除项目,然后返回被删除的项目。
			//定义左右两个数组
			var left = [];
			var right = [];
			for (var i = 0; i < arr.length; i++) {
				//如果元素比中间值小,则放左边,反之放右边;
				if (arr[i] < median) {
					left.push(arr[i]);
				} else {
					right.push(arr[i]); //push()方法是向数组末尾添加一个或多个新项目并返回新数组的长度
				}
			}
			return quickSort(left).concat(median, quickSort(right));//concat()方法连接两个或多个数组,不会改变原有数组,返回一个新数组
		}
		console.log(quickSort(array));

JS数组去重

1.双重for循环:外层循环元素,内层循环时比较值

var arr=[10, 90, 55, 43, 55, 55, 90];
		for(var i=0;i<arr.length;i++){
			for(var j=i+1;j<arr.length;j++){
				//判断原数组在新数组中是否有相同的元素
				if(arr[i]==arr[j]){
					arr.splice(j,1);//splice(索引,要删除的项目的数量,添加)方法向/从数组中添加/删除项目,然后返回被删除的项目 
					j--;//删除两个或三个以上的重复值;
				}
			}
		}
		console.log(arr);

2.indexOf去重

   //原数组
    var arr=[10, 90, 55, 43, 55, 55, 90];
    //定义一个新数组,先存放不可能与数组arr重复的元素
	var arr1=[];
	for(var i=0;i<arr.length;i++){
	//indexOf 判断指定的字符串是否存在,如果不存在,则返回-1;如果存在则返回第一次出现的索引值
		if(arr1.indexOf(arr[i])>=0){
			    continue;//已存在就退出循环
		}
		else{
			//不存在就push进新数组
			arr1.push(arr[i]); //push()向数组末尾添加一个或多个新项目并返回新数组的长度
		}
	console.log(arr1);

3.Set去重

var arr=[10, 90, 55, 43, 55, 55, 90];
var num=new Set(arr);
console.log(num);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值