表格删除选中数据的二三事

0.需求场景

最近项目中遇到一个问题,删除表格中选中的数据【注意:选中过程中不能删除,只能在最终点击删除按钮时,执行删除操作】。

1.需求转化

实际上这个问题相当于一道算法题目。
给定一个数组A = [9,8,7,6,5,4,2,3,1]和表示数组下标的数组B = [2,4,3],请删除A中下标在B中的元素。

1
2
输入:[9,8,7,6,5,4,2,3,1],[2,4,3,7]
输出:[9,8,4,2,1]

2.解题思路

这道问题的难点在于删除数组元素时,需要保证每次删除数组元素时,数组元素的位置不能变。

解决问题的思路:

  1. 使用Array.filter()

先将数组进行重新封装,封装成如下格式:

1
2
3
4
[{
"value" : xxx,
"index" : xxx
}]

然后使用Array.filter()进行删除元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
let arr = [
{
productId: 1,
productName: '电视机',
num: 20
}, {
productId: 2,
productName: '洗衣机',
num: 0
}, {
productId: 3,
productName: '冰箱',
num: 50
}, {
productId: 4,
productName: '空调',
num: 0
},
]
arr = arr.filter(item => {
return item.num != 0
})
console.log(arr)

结果:

  1. 使用map.has()
    将数组B转化为map,循环数组A,判断数组A的下标值是否包含在数组B转化的map中。
文章作者: qinwei
文章链接: https://qw-null.github.io/2022/03/31/表格删除选中数据的二三事/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QW's Blog