checkMac(e){ const checkValue=e.detail.value; const isChecked=checkValue.length>0 console.log('value',checkValue) console.log('check',isChecked) let checkedList = this.data.checkedList if (isChecked) { // 添加到数组 checkedList.push(checkValue); } else { // 从数组中删除 const index = checkedList.indexOf(checkValue); if (index > -1) { checkedList.splice(index, 1); } } for(var i=0;i<checkedList.length;i++){ console.log('Mac',checkedList[i]) } }, 取消选中后checkedList中选中的deviceId还存在是为什么
时间: 2024-04-15 16:28:19 浏览: 87
在您提供的代码中,取消选中后 `checkedList` 中选中的 `deviceId` 仍然存在的原因是,`e.detail.value` 返回的是一个数组,而不是单个值。所以在添加或删除元素时,您需要操作整个数组而不是单个值。
在您的代码中,`checkValue` 是一个数组,它包含了当前选中的 `deviceId`。当取消选中时,`checkValue` 数组会被清空,但是 `checkedList` 数组中的元素并没有被删除。这是因为使用 `indexOf` 方法查找删除元素时,它会尝试找到与 `checkValue` 完全相等的元素,但实际上 `checkValue` 是一个数组,而不是单个值。
为了解决这个问题,您可以使用 `Array.includes()` 方法来判断 `checkedList` 数组中是否包含某个 `deviceId`,然后再进行添加或删除操作。下面是修改后的代码示例:
```javascript
checkMac(e) {
const checkValue = e.detail.value;
const isChecked = checkValue.length > 0;
console.log('value', checkValue);
console.log('check', isChecked);
let checkedList = this.data.checkedList;
if (isChecked) {
// 添加到数组
for (let value of checkValue) {
if (!checkedList.includes(value)) {
checkedList.push(value);
}
}
} else {
// 从数组中删除
for (let value of checkValue) {
const index = checkedList.indexOf(value);
if (index > -1) {
checkedList.splice(index, 1);
}
}
}
for (var i = 0; i < checkedList.length; i++) {
console.log('Mac', checkedList[i]);
}
}
```
在修改后的代码中,我们使用了 `Array.includes()` 方法来检查 `checkedList` 数组中是否包含某个值,如果不包含才进行添加操作。这样可以避免重复添加相同的 `deviceId`。
希望这个解决方案能够帮助到您!如果还有其他问题,请随时提问。
阅读全文