插入排序从大到小插入可以,但是从小到大却说页面崩溃了?

插入排序从大到小插入可以,但是从小到大却说页面崩溃了?求解

以下代码没有注释的是排序成功的,注释的是排序失败的,我不知道为什么会这样,最下面的截图是网页出现的错误

 // 插入排序思想:先准备一个空数组,接第一个数组的数据,然后后面的数据要跟这个新准备的数组一一进行比较

      let arr = [1, 4, 21, 9, 6, 33, 55, 74];
      let arr1 = [];
      arr1.push(arr[0]);
      for (let i = 1; i <= arr.length - 1; i++) {
        let A = arr[i];
        for (let i = arr1.length - 1; i >= 0; i--) {
          if (A > arr1[i]) {
            arr1.splice(i + 1, 0, A);
            break;
          }
          if (i === 0) {
            arr1.unshift(A);
          }
        }
        // for (let i = 0; i <= arr1.length - 1; i++) {
        //   if (A < arr1[i]) {
        //     arr1.splice(i, 0, A);
        //     break;
        //   }
        //   if (i === arr1.length - 1) {
        //     arr1.push(A);
        //   }
        // }
      }
      console.log(arr1);

img

array的排序不用自己写的。
let arr = [1, 4, 21, 9, 6, 33, 55, 74];
arr.sort((a,b)=>{return a-b});//升序
arr.sort((a,b)=>{return b-a});//降序