遍历中的数组删除数据问题
2023-09-11 14:22:18 时间
今天开发jqgrid需要有单行删除功能和所有选中删除功能,在进行所有选中删除功能开发时最简单的代码却总是跑不通。
其实心中早已预料到,肯定是自己写了一些把自己绕进去的代码,因为这几行就是一个简单的循环。
找出这段自己绕自己的代码,这勾起了我巨大的兴趣,因为肯定有编程的细节我忽略了,在关键时刻,这些细节可能是致命的。
1 if("basMgmtGridIdGrid" == rowid) {
2 var ids = jqgrid.jqGrid('getGridParam', 'selarrrow');
3 for(var i = 0; i < ids.length; i++) {
4 jqgrid.delRowData(ids[i]);
5 }
6 } else {
7 jqgrid.delRowData(rowid);
8 }
前端显示有两个选中的行,触发删除所有选中行时之删除了一行。
原来数组的length属性是动态变化的,删除了一行,length就减1,但i还是执行i++了,结果不满足下一次循环的条件了
修改代码
1 if("basMgmtGridIdGrid" == rowid) {
2 var ids = jqgrid.jqGrid('getGridParam', 'selarrrow');
3 while(ids.length > 0) {
4 jqgrid.delRowData(ids[0]);
5 }
6 } else {
7 jqgrid.delRowData(rowid);
8 }
联想扩展:做为一个Java程序员,一下就想到了java中的集合,list、set、map的length()也是动态的。其实这些基本的知识自己都学过,但是就是不出错记不住啊。
相关文章
- Java实现 LeetCode 543. 二叉树的直径(遍历树)
- Java实现 LeetCode 105 从前序与中序遍历序列构造二叉树
- jquery遍历数组的方式
- jquery遍历:数组、对象、json
- 【二叉树】106. 从中序与后序遍历序列构造二叉树 【中等】
- LeetCode-121. 买卖股票的最佳时机【单调栈,一次遍历】==注意暴力解法会超时。==
- linux shell带索引下标遍历数组
- go使用for...range遍历数组
- Python3遍历指定文件夹下所有文件及文件夹
- 【数据结构】树的前序、中序、后续遍历的非递归写法
- 华为OD机试 - 二叉树层序遍历(Java & JS & Python)
- 10.for循环遍历数组
- uni——foreach遍历 创建对象数组
- 2049. 统计最高分的节点数目-数组树构造+遍历求解最大值数目
- 1609. 奇偶树-层次遍历-力扣双百代码
- 2475. 数组中不等三元组的数目-快速排序+遍历求和
- 指针遍历二维数组的三种方式
- 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )
- js 实现二叉树前序遍历
- 重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法
- js-jquery-数组遍历
- 树的遍历 迭代算法——思路:初始化stack,pop stack利用pop的node,push new node to stack,可以考虑迭代一颗树 因为后序遍历最后还要要访问根结点一次,所以要访问根结点两次是难点
- e1087. 用For循环做数组的遍历
- 数据结构 -- 简单图的实现与遍历 (Java)
- C# 遍历数组获取最小值及下标(包含最大值)
- JS遍历数组的方法【详解】
- 二叉树专题01------树的基础知识,遍历方式、前序遍历、中序遍历和后序遍历、递归、迭代、DFS、BFS、层序遍历