apacheao / blog

0 stars 0 forks source link

数组中使用递归的小栗子 #19

Open apacheao opened 4 years ago

apacheao commented 4 years ago
/**
 * 查找数组中的最小值
 */
const min = (arr) => {
   if (!arr || !Array.isArray(arr)) new Error("must receive a type is Array parmas");
     return 
   const arrLen = arr.length;
   if(arrLen > 2) {
     return min([arr[0], min(arr.slice(1))]);
  } else {
     return Math.min.apply(null, arr);
  }
}

/**
 * 查找数组中的最小值的索引
 */
const minIndex = (arr) => { return arr.indexOf(min(arr)) };

/**
 * 将数组从小到大进行排序
 */
const sort = (arr) => {
   if (!arr || !Array.isArray(arr)) new Error("must receive a type is Array parmas");
     return 
   const arrLen = arr.length;
   if(arrLen > 2) {
    let index = minIndex(arr);
    let min = arr[index];
    arr.splice(index, 1);
    return [min].concat(sort(arr))
  } else {
    return arr[0] > arr[1] ? arr.reverse() : arr
  }
}