先上代码:function fastSort(arr, isDown=false){ if(getVarType(arr) !== "array" || arr.length <= 1){ return arr; } var mid = arr.splice(Math.floor((arr.length-1)/2), 1)[0], left = [], right = []; for(var i=0; i<arr.length; i++){ arr[i] > mid? right.push(arr[i]): left.push(arr[i]); } [a, b] = isDown?[right, left]: [left, right]; return fastSort(a).concat(mid, fastSort(b));}var a = [417,7,9,42,3,3,43,90,0,66];fastSort(a);写了个快速排序,想用解构赋值的方式 实现升序降序功能,然后这种写法得到的数组是:[0, 3, 3],大概调试看了下发现 最后的return传的参数把a,b 改为left,right,结果就没问题。或者a,b的赋值改为var a = isDown?right: left, b = isDown?left: right;结果也是没问题,所以猜测会是和解构赋值这种写法有关么?PS:控制台打了下断点,发现用 return fastSort(a).concat(mid, fastSort(b)) 这种写法fastSort(b) 都没有调用就直接return 最终结果了,所以导致得到的数组是 [0,3,3].
添加回答
举报
0/150
提交
取消