为了账号安全,请及时绑定邮箱和手机立即绑定

按 2 个不同的属性对数组进行排序/分组

按 2 个不同的属性对数组进行排序/分组

皈依舞 2022-12-22 15:47:58
我有一个基于其“程序”属性的分组/排序数组,这很棒。但是现在我需要根据该分组内的不同属性(可交付)进行排序,这可能吗?如果是这样,我怎样才能做到这一点?这是我的桌子的照片。看看它是如何按程序组织的?在程序分组中,我还想根据可交付项目进行排序/分组,因为每个程序中会有两个以上的方法。此外,如果工作量不大,我也希望使这些行可点击(展开/折叠),这样表格在加载后不会有 100 行长。这是我的预期输出:预期结果+------------+----------------------+-----------+------------+--------------+---------------------+| Program    | Deliverable          |  Date     |   Approved | Notes        | To                  |+------------+----------------------+-----------+------------+--------------+---------------------+| Program 1  |                                                                                    |+------------+----------------------+-----------+------------+--------------+---------------------+|            | Monthly Status Report|                                                             |+------------+----------------------+-----------+------------+--------------+---------------------+|            |                      | 05/10/2020| Yes        | Example Notes| example@example.com |+------------+----------------------+-----------+------------+--------------+---------------------+|            |                      | 03/30/2020| No         | Example Notes| example@example.com |+------------+----------------------+-----------+------------+--------------+---------------------+|            | Meeting Minutes      |                                                             |+------------+----------------------+-----------+------------+--------------+---------------------+
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

只需对您的结果进行排序。


Object.keys(sortedObj).forEach(key => {

      tableContent += "<tr>";

      tableContent += "<td>" + key + "</td>";

      tableContent += "</tr>";

      sortedObj[key].sort((a,b)=>{

          if (a.Deliverable > b.Deliverable) return 1;

          if (a.Deliverable < b.Deliverable) return -1;

          return 0;

      }).forEach(obj => {

        tableContent += "<tr>";

        tableContent += "<td> </td>";

        tableContent += "<td>" + obj.To + "</td>";

        tableContent += "<td>" + obj.Date + "</td>";

        tableContent += "<td>" + obj.Approved + "</td>";

        tableContent += "<td>" + obj.Notes + "</td>";

        tableContent += "<td>" + obj.Deliverable + "</td>";

        tableContent += "</tr>";

      });

    });


查看完整回答
反对 回复 2022-12-22
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这是代码:


var sortedObj = {}

objItems.forEach(item => {

var program = item.Program;

var deliverable = item.Deliverable;

delete (item.Program); //remove this line to keep the program in the item data

delete (item.Deliverable); //remove this line to keep the deliverable in the item data

if(!sortedObj[program]){

sortedObj[program] = {};

}

if(!sortedObj[program][deliverable]){

sortedObj[program][deliverable] = [];

}

sortedObj[program][deliverable].push(item);

});

 

Object.keys(sortedObj).forEach((program, index) => {

tableContent += "<tr class='breakrow'>";

tableContent += "<td>" + program + "</td>";

tableContent += "</tr>";

Object.keys(sortedObj[program]).forEach((deliverable, index) => {

tableContent += "<tr class='datarow'>";

tableContent += "<td> </td>";

tableContent += "<td>" + deliverable + "</td>";

tableContent += "</tr>";

sortedObj[program][deliverable].forEach(obj => {

tableContent += "<tr class='subdatarow'>";

tableContent += "<td> </td>";

tableContent += "<td> </td>";

tableContent += "<td>" + obj.To + "</td>";

tableContent += "<td>" + obj.Date + "</td>";

tableContent += "<td>" + obj.Approved + "</td>";

tableContent += "<td>" + obj.Notes + "</td>";

tableContent += "</tr>";

});

});

});

      $("#deliverables").append(tableContent);

      $('.datarow').hide();

    $('.subdatarow').hide();

 

      $('#deliverablesTable').on('click', 'tr.breakrow', function(){

      console.log('hello');

        $(this).nextUntil('tr.breakrow').slideToggle(200);

      });

      $(document).on('click','#deliverablesTable tr.datarow', function(){

        $(this).nextUntil('tr.breakrow, tr.datarow').slideToggle(200);

      });

      })


查看完整回答
反对 回复 2022-12-22
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号