operateDelete: function (event) { let i = parseInt(event.currentTarget.dataset.index); console.log(i); let newList = this.data.list.filter(function (listItem) { return listItem !== i; }); wx.setStorage({ key: 'CalculatorDates', data: newList, success: function() { console.log('更新缓存数据成功'); } }); this.setData({ list: newList }); },这段代码无法正确删除指定字段,event.currentTarget.dataset.index是number值
时间: 2024-03-27 15:36:32 浏览: 14
非常抱歉,我之前的回答有误。你所说的是正确的, `event.currentTarget.dataset.index` 可以是数值类型。而且你的代码也是正确的,如果 `event.currentTarget.dataset.index` 是数值类型,那么通过 `parseInt` 进行转换是没有必要的。
关于代码删除指定字段的问题,我认为可以根据 `listItem` 的下标值来进行判断和删除。可以改进的代码如下:
```
operateDelete: function (event) {
let i = event.currentTarget.dataset.index;
console.log(i);
let newList = this.data.list.filter(function (listItem, index) {
return index !== i;
});
wx.setStorage({
key: 'CalculatorDates',
data: newList,
success: function() {
console.log('更新缓存数据成功');
}
});
this.setData({
list: newList
});
}
```
在上面的代码中,我们使用 `filter` 方法来遍历 `this.data.list` 中的每一个元素,同时获取它们的下标值 `index`。如果 `index` 不等于要删除的下标值 `i`,则将当前元素保留在新的列表 `newList` 中;否则,将当前元素删除。最后,我们将更新后的 `newList` 重新设置到页面数据中,并更新本地缓存数据。