如何每 减少一条id同时减1 let dataSourceLength = this.dataSourceFeWater.length this.dataSourceFeWater = this.dataSourceFeWater.filter((item) => item.id !== id)
时间: 2024-03-23 08:38:24 浏览: 26
如果你的意思是想在过滤数组 `dataSourceFeWater` 中删除 `id` 对应的元素并将数组长度减一,可以这样实现:
```
let dataSourceLength = this.dataSourceFeWater.length;
this.dataSourceFeWater = this.dataSourceFeWater.filter((item) => item.id !== id);
if (this.dataSourceFeWater.length < dataSourceLength) {
dataSourceLength--;
}
```
这段代码中,我们首先记录原始数组的长度,然后使用 `filter()` 方法过滤掉 `id` 对应的元素。最后,我们比较过滤后数组的长度是否比原始长度小,如果是,则将原始长度减一。这样就可以同时删除指定元素并减少数组长度了。
相关问题
deleteItemFeWater(id) { let dataSourceLength = this.dataSourceFeWater.length this.dataSourceFeWater = this.dataSourceFeWater.filter((item) => item.id !== id) // if (dataSourceLength === 1) { // this.addItemFeWater(0) // } }对应删除减一但是在save(){ console.log(this.dataSourceFeWater)}打印的id不对
这段代码中,deleteItemFeWater()函数会从dataSourceFeWater数组中删除指定id的元素。而在save()函数中,你打印的是dataSourceFeWater数组,但是你并没有给出你是如何调用deleteItemFeWater()函数的。如果调用deleteItemFeWater()函数时传递的参数不正确,那么在save()函数中打印的结果可能就不正确了。请检查一下你调用deleteItemFeWater()函数时传递的参数是否正确。如果问题还存在,请提供更多的代码和上下文信息,以便我能够更好地帮助你解决问题。
换一种方法实现deleteItem(key) { let dataSourceLength = this.dataSource.length; this.dataSource = this.dataSource.filter(item => item.key !== key); if (dataSourceLength === 1) { this.addItem(0); } this.dataSource.forEach((item, index) => { item.key = index; }); this.$delete(this.editableData, key); },
这段代码的作用是从数据源 `dataSource` 中删除指定 `key` 的项,并且删除 `editableData` 对象中对应的属性。如果数据源中只剩下一项,那么会自动添加一项。
这里提供一种使用 `splice` 方法的实现方法:
```
deleteItem(key) {
let index = this.dataSource.findIndex(item => item.key === key);
if (index !== -1) {
this.dataSource.splice(index, 1);
this.dataSource.forEach((item, index) => {
item.key = index;
});
}
this.$delete(this.editableData, key);
if (this.dataSource.length === 1) {
this.addItem(0);
}
}
```
这个实现方法首先通过 `findIndex` 方法找到要删除的项在数据源中的索引,然后使用 `splice` 方法将其从数组中删除。接着,更新数据源中的 `key` 属性值,并且从 `editableData` 对象中删除对应的属性。最后,如果数据源中只剩下一项,自动添加一项。