相关借鉴文章:https://juejin.im/entry/57d90…<!–快速排序–>function quickSort(arr){//如果数组个数为1个,则直接返回数组本身if(arr.length<=1){ return arr}//获取数组中间值的索引var quickIndex = Math.floor(arr.length/2);//quick取到数组中间那个值,[0]取值,不加[0],则打印出来是一个数组,例如[9],加[0],则打印出来是一个值,例如9;var quick = arr.splice(quickIndex,1)[0];//定义两个空数组,大于中间值放到right,小于中间值放到leftvar left = [];var right = [];for(var i=0,len=arr.length;i<len;i++){ if(arr[i]<quick){ left.push(arr[i]) }else{ right.push(arr[i]) }}return quickSort(left).concat(quick,quickSort(right));}var arr = [3,5,7,2,11,77]document.write(quickSort(arr));//2,3,5,7,11,77<!–数组去重–>var arr1 = [1,2,2,3,3,4,5,6,6], arr2 = [];for(var i = 0;i < arr1.length;i++){if(arr2.indexOf(arr1[i]) < 0){ arr2.push(arr1[i])}}document.write(arr2);//1,2,3,4,5,6冒泡排序原理:让数组中的当前项和后一项进行比较,如果当前项大于后一项,我们让两者交换位置(小->大)每一轮从前到后两两比较,虽然不一定实现最后的排序效果,但是可以把当前最大的放在末尾具体比较的轮数:ary.length-1 数组有多长,我们只需要把总长度-1个数分别放在末尾,即可实现最后的排序第一轮比较5次:一共六个,不需要和自己比较第二轮比较4次:一共六个,不用和自己比,也不用和第一轮放在末尾的那个最大值比第三轮比较3次:…<br/>每一轮比较的次数:ary.length - 1(不用和自己比)-当前已经执行的论数(执行一轮向末尾放一个最大值,这些值不需要在比较)a=12 b=13 a和b交换值第一种方法:c=aa=bb=c第二种方法: a=a+b;25b=a-b;12a=a-b;13function bubble(ary){for(var i=0;i<ary.length-1;i++){for(var j=0;j<ary.length-1-i;j++){if(ary[j]>ary[j+1]){var temp = ary[j];ary[j] = ary[j+1];ary[j+1] = temp;}}}return ary;}var ary = [5,3,1,57,89,9];console.log(bubble(ary));如果是从大到小排序,直接return ary.reverse();<!–reduce实现数组求和–>Array.prototype.sum = function(){var cur = 0;return this.reduce((prev,next)=>{ return cur = prev + next;})return cur;}var ary = [1,2,3,4];console.log(ary.sum());//10function sumFun(cur){var sumTot = 0;return cur.reduce((prev,next) => { return sumTot = prev + next;},0);return sumTot;}var num = [1,2,3]sumFun(num);//6