分割数组对象

问题描述

找出数组对象中某个属性值连续降序的项放到一个新的数组,再拼接在一个数组中

问题出现的环境背景及自己尝试过哪些方法

1.尝试了for循环,map,reduce,但是遍历不出来,不懂怎么判断分割
2.路过大佬帮忙看一下,感谢

相关代码 粘贴代码文本(请勿用截图)

 const arr = [

     {name: '小明',age: 15},

     {name: '小张',age: 13},

     {name: '小红',age: 11},

     {name: '小黄',age: 18},

     {name: '小路',age: 12},

     {name: '小白',age: 9},

     {name: '小方',age: 9},

     {name: '小静',age: 8},

     {name: '小云',age: 14},

     {name: '小风',age: 14},

     {name: '小峰',age: 13},

     {name: '小龙',age: 11},

     {name: '嘎子',age: 10},

     {name: '张合',age: 18}, 

 ]

你期待的结果是

 [

     [

         {name: '小明',age: 15},

         {name: '小张',age: 13},

         {name: '小红',age: 11}, 

     ],

     [

         {name: '小黄',age: 18},

         {name: '小路',age: 12},

         {name: '小白',age: 9},

         {name: '小方',age: 9},

         {name: '小静',age: 8}, 

     ],

     [

         {name: '小云',age: 14},

         {name: '小风',age: 14},

         {name: '小峰',age: 13},

         {name: '小龙',age: 11},

         {name: '嘎子',age: 10}, 

     ],

     [

         {name: '张合',age: 18}, 

     ]

 ]
阅读 2.7k
2 个回答
arr.reduce((result, next) => {
   if (result.temp < next.age) {
     result.arr.push([]);
   }
   result.temp = next.age;
   result.arr[result.arr.length - 1].push(next);
   return result;
}, { arr: [], temp: 0 })
一个数组r,初始化一个子数组a塞进去,声明一个变量minAge
对于原数组中的每一项i,执行以下操作
    检查a长度,为0,则minAge = i.age;
    不为0,则检查i.age < minAge是否成立
      成立,则将i推入a
      不成立,则对a赋值数组a = [i], 并把a追加到r
原数组遍历完成,则r即为所求

逻辑就这样,本来写代码还更快,但是直接给代码或许会略去了思考的过程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题