美文网首页
数组内对象数字排序(从大到小)代码为年份排序

数组内对象数字排序(从大到小)代码为年份排序

作者: Enginner_XZ | 来源:发表于2020-10-01 14:16 被阅读0次
        // 处理年份
        var index = 0;
        while (index < this.clientIncomeDatas.datas[0].data.list.length) {
          let self = this.clientIncomeDatas.datas[0].data.list;
          let item = self[index];
          var flag = true;
        // 通过使用try抛出异常来实现更高效率的停止循环 , 因为forEach内无法使用break结束循环  , 所以使用了try
          try {
            self.forEach((it, i) => {
              // console.log(item.year);
              // 循环判断item是否比每一个it都大
              if (!flag) {
                // 一旦当前循环判断的年不是最大 , 那么后续就不再进行判断
                throw new Error('跳出循环');
              }
              //  一旦小于就会无法再新进行循环 , 每次都会被return掉
              // console.log(item.year);
              if (item.year < it.year) {
                // 一旦不大于it 那么 flag为false 停止循环判断大小
                flag = false;
                // 当年份不是最大时 , 就可以开始新一轮的循环判断大小 , 在此处让while循环index++
                index++;
                return;
              } else if (flag && i >= self.length - 1) {
                // 如果每次都大于 , 循环了所有的it 那么就截取这个最大值放进新的数组 , 开始新的循环
                this.newList.push(self.splice(index, 1)[0]);
                // 因为要让数组内年份从第一个开始继续和每个对象判断 , 所以找到最大的截取后 , 将循环索引归零 , 这也是为什么外层要是用for循环的原因 , 因为forEach一类的方法  无法重置循环
                index = 0;
                return;
              }
            });
          } catch (e){
      //上面抛出一个Error对象 , 这里判断 , 如果不是我自己设定好的错误提示那么就打印出这个错误
            if( e.message != '跳出循环' ) throw e.message;
          }
        }

相关文章

网友评论

      本文标题:数组内对象数字排序(从大到小)代码为年份排序

      本文链接:https://www.haomeiwen.com/subject/ptimuktx.html