手写函数实现数组的去重、反转、排序
去重:
//数组去重 /**新建一个空数组a,依次写入待去重数组的元素b,每次写入一个元素时,a数组的每个元素比较一遍,看是否有相同的, 如果有则忽略,继续判断下一个元素,如果没有则将此元素写入a,以此类推,直到b的最后一个元素 **/ function arrQuChong(a) { let newArr = []; for (let i = 0; i < a.length; i++) { if (newArr.indexOf(a[i]) == -1) newArr.push(a[i]); } return newArr; } arr = [1, 2, 3, 4, 3, 2, 6]; console.log(arrQuChong(arr)); //[1,2,3,4,6]
反转:
//数组的反转--不改变原数组 function arrFanZhuan(a){ let arr = []; for(let i = a.length-1;i>=0;i--){ arr.push(a[i]); } return arr; }
输出数组的最大值:--改变原数组
//输出数组的最大值:--改变原数组
function arrGetMax(a){ let getArrLength = a.length; let num = undefined; if(getArrLength<2) return a[0]; for(let i=0;i<=getArrLength-2;i++){ if(a[i]>a[i+1]) { num = a[i]; a[i] = a[i+1]; a[i+1] = num; } } return a[getArrLength-1]; }
输出数组最小值:--改变原数组
//获取数组中最小的元素--改变原数组 function arrGetMin(a){ let getArrLength = a.length; let num = undefined; if(getArrLength<2) return a[0]; for(let i=0;i<=getArrLength-2;i++){ if(a[i]<a[i+1]) { num = a[i]; a[i] = a[i+1]; a[i+1] = num; } } return a[getArrLength-1]; }
数组升序:
//数组升序--改变原数组--冒泡排序:把相邻元素中最大的那个排到前面去,关注点放在最大的元素上,而不固定在某个元素上 function arrSortUp(a){ let getArrLength = a.length; let num = undefined; let num1 =getArrLength-2; // if(getArrLength<2) //下面的判读就包含了这一步,所以可以省略 // return a; for(let i=0;i<=getArrLength-2;i++){ for(let j=0;j<=num1;j++){ if(a[j]>a[j+1]){ num = a[j]; a[j] = a[j+1]; a[j+1] = num; } } num1--; } return a; }
数组降序排列:
function arrSortDown(a){ let getArrLength = a.length; let num = undefined; let num1 =getArrLength-2; // if(getArrLength<2) //下面的判读就包含了这一步,所以可以省略 // return a; for(let i=0;i<=getArrLength-2;i++){ for(let j=0;j<=num1;j++){ if(a[j]<a[j+1]){ num = a[j]; a[j] = a[j+1]; a[j+1] = num; } } num1--; } return a; }