在一定要求下我们需要符合要求的去完成任务
就比如说我们如何将一组数组按从小到大打的顺序排序呢?
当然呢方法逻辑肯定会有很多
下面让我来带大家完成一下吧:

方法一:使用forEach循环嵌套for循环的方法

方法一使用forEach循环嵌套for循环的方法
其实这里也可以改为双重for循环嵌套
但是呢博主为了省一点点的事就写成上面的样子了
主要方法思路还带看下面的代码块

var  arr1=[11,9,7,5,15,8];
//此处arr2没有别的作用为了打印之后跟替换完之后对比一下
var  arr2=[11,9,7,5,15,8];
var  a=0;
//先是第一层循环,是为了要确认出数组的总长度以及循环次数
arr1.forEach((item,index)=>{
//第二层循环才是修改内容的,这里有一个让这个循环次数每一次减去第一层已经循环的次数也可以理解为下标
//第二层循环主要是为了来限制内层循环的次数 从而让数值改变一轮之后就不在接着改变 就算不减第一层已经的次数也不会影响结果 主要作用是减少性能消耗
	for(var  b=0;b<arr1.length-index;b++){
		//第三层if判断是为了确认每一次要进行修改的值
		//每次判断当前循环的值是否与下一个值大或者小,如果符合要求,则对两个数据进行位置的调换,以此类推
		
		if(arr1[b]>arr1[b+1]){
			a=arr1[b];
			arr1[b]=arr1[b+1];
			arr1[b+1]=a;
			//这里建议每次循环完之后打印一下看一下结果,感受感受
			//此处arr2没有别的作用为了打印之后跟替换完之后对比一下
			console.log(arr2,arr1,'内部')
		}
	}
})
console.log(arr1)//[5, 7, 8, 9, 11, 15]

//双重for循环是这样的写的
//其实差别也不算太大哈
//逻辑跟上面的都是一样的
var  arr1=[11,9,7,5,15,8];
var  a=0;
arr1.forEach((item,index)=>{
	for(var  b=0;b<arr1.length-index;b++){
		if(arr1[b]>arr1[b+1]){
			a=arr1[b];
			arr1[b]=arr1[b+1];
			arr1[b+1]=a;
		}
	}
})
console.log(arr1)//[5, 7, 8, 9, 11, 15]

以上代码都为方法一

方法二:依然是for循环嵌套for循环但是将逻辑改变了一下

方法二使用forEach循环嵌套for循环的方法
其实这里也可以改为双重for循环嵌套
但是呢博主为了省一点点的事就写成上面的样子了
主要方法思路还带看下面的代码块

var  arr1=[11,9,7,5,15,8];
arr1.forEach((item,index)=>{
	var min = item; //先将当前值当做是最小值或者最大值
	var temp; //方便后面获取当钱循环的值
	var minIndex = index; //获取当做是最小值或者最大值的下标
	for( var j = index + 1; j< arr1.length; j++){
		if( arr1[j] < min ){ // 将外层循环的最小值或最大值跟内层循环的每一个值作比较
			min = arr1[j];   // 将内层循环符合条件的值替换这个外层循环的最小值或者最大值
			minIndex = j;    // 并且将最后进入改判断的值的下标保存
		}
	}
	temp = arr1[index]; //将当前的值进行存放
	arr1[index] = min;  //让数组当前下标位置进行重新赋值,赋值为与内层循环进行对比后的最小值或最大值
	arr1[minIndex]= temp; //将当前的值赋值给数组中符合内层循环符合条件的下标位置
})
console.log(arr1) //[5, 7, 8, 9, 11, 15]


//双重for循环是这样的写的
//其实差别也不算太大哈
//逻辑跟上面的都是一样的
var  arr1=[11,9,7,5,15,8];
for( var i = 0; i< arr1.length ; i++){
	var min = arr1[i]; //先将当前值当做是最小值或者最大值
	var temp; //方便后面获取当钱循环的值
	var minIndex = i; //获取当做是最小值或者最大值的下标
	for( var j = i + 1; j< arr1.length; j++){
		if( arr1[j] < min ){ // 将外层循环的最小值或最大值跟内层循环的每一个值作比较
			min = arr1[j];   // 将内层循环符合条件的值替换这个外层循环的最小值或者最大值
			minIndex = j;    // 并且将最后进入改判断的值的下标保存
		}
	}
	temp = arr1[i]; //将当前的值进行存放
	arr1[i] = min;  //让数组当前下标位置进行重新赋值,赋值为与内层循环进行对比后的最小值或最大值
	arr1[minIndex]= temp; //将当前的值赋值给数组中符合内层循环符合条件的下标位置
}
console.log(arr1) //[5, 7, 8, 9, 11, 15]

方法三:比较简单的数组sort()方法

arr1.sort((a,b)=>{
	// 每相邻的两个值如果值最小或者最大则将其返回
	// 第一个参数为每一次循环的值,但是不包括第一个
	// 第二个参数为每一次循环的值,但是不包括最后一个
	// 从第二个值开始减自己的前一个值,将这个结果进行返回并且按升序的顺序排序
	return a-b;
	// 从第一个值开始减自己的后一个值,将这个结果进行返回并且按降序的顺序排序
	// return b-a;
})
console.log(arr1) //[5, 7, 8, 9, 11, 15]

其实还有别的方法,但是我不写了,也可以将这些方法封装在函数内调用的时候用来处理数据。
好了数组排序方法就先写到这里

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐