开发需求总结14-数组对象中根据相同的id进行排序

需求描述:

大家都知道element里el-table组件实现单选、全选,只需要在el-table-column,设type属性为selection,通过selection-change事件就可以得到选中的数组。一般像批量发布、批量审批、批量拒绝等场景,不涉及选中后排序,是可以直接将选中后的数据的id作为参数,传递给后端。

但是如果涉及到排序,最近在项目中遇到一个elementUI上表格可多选或单选的坑!这个场景不是很好描述,el-table数据,每一条数据代表一个事件,每一个事件有多个措施。在选中每一条数据最后导出时,需要把每一条数据的事件id,措施id传递给后端。后端会把具有相同事件id的数据合并。所以一旦涉及到一个一个选中,并且不是按照顺序从上到下选择,那么传给后端的数据就是乱的,此时最保险的做法就是前后端都进行相同事件id的排序操作,确保不会出现问题。

例如下面这样的数据,etid代表事件id,sonid代表措施id,两个相同的事件id中间有另外一个事件,如果前后端都没有进行排序,那么导出来的表格里面就只有一条数据(后端是根据第一个id和最后一个相同的id,进行合并的)。

{etid: 2938, sonid: 5233},  

{etid: 2937, sonid: 5233},  

{etid: 2938, sonid: 5238}  

所以我们需要对这种不按照顺序选中的数据,进行相同的etid的排序,再传给后端,以下是解决方案。

代码实现:

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这个是一个比较典型的数据管理程序,以下是一个基本的实现思路: 1. 定义一个结构体,表示需要管理的对象(如成绩、商品或图书),包括各种属性,比如名称、编号、价格、库存等等。例如: ``` struct Product { int id; // 商品编号 char name[20]; // 商品名称 int price; // 商品价格 int stock; // 商品库存 }; ``` 2. 定义一个数组或链表,存储这些对象。可以在程序开始时从文件读取数据,并将其存储到数组或链表。例如: ``` Product products[100]; // 最多存储100个商品 int numProducts = 0; // 当前存储的商品数量 // 从文件读取商品数据 void loadProducts() { // TODO: 实现从文件读取数据,并将其存储到products数组 } // 将商品数据写入文件 void saveProducts() { // TODO: 实现将products数组的数据写入文件 } ``` 3. 实现基本的输入、输出、查询、统计、排序等功能。这些功能可以封装成函数,方便调用。例如: ``` // 添加一个新商品 void addProduct(Product product) { products[numProducts++] = product; } // 根据商品编号查询商品 Product* findProductById(int id) { for (int i = 0; i < numProducts; i++) { if (products[i].id == id) { return &products[i]; // 返回指向商品的指针 } } return NULL; // 没有找到,返回NULL } // 对商品按价格进行排序 void sortProductsByPrice() { // TODO: 实现对products数组的商品按价格进行排序 } // 输出所有商品的信息 void printAllProducts() { for (int i = 0; i < numProducts; i++) { printf("%d\t%s\t%d\t%d\n", products[i].id, products[i].name, products[i].price, products[i].stock); } } ``` 4. 在主函数调用这些函数,实现完整的程序。例如: ``` int main() { loadProducts(); // 从文件读取商品数据 // 添加新商品 Product product1 = {1001, "iPhone", 8999, 10}; addProduct(product1); Product product2 = {1002, "iPad", 3999, 5}; addProduct(product2); // 查询商品 Product* foundProduct = findProductById(1001); if (foundProduct != NULL) { printf("Found product: %s\n", foundProduct->name); } // 排序 sortProductsByPrice(); // 输出所有商品 printAllProducts(); saveProducts(); // 将商品数据写入文件 return 0; } ``` 以上就是一个基本的数据管理程序的实现思路,具体的实现细节需要根据具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_LiuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值