【发布时间】:2021-12-25 07:40:57
【问题描述】:
我正在尝试使用地图删除一些信息以保存所有选定的值,然后按删除,所有内容都应该被删除,但是当我选择所有这些值时我只做 1,我做错了什么?
librosData.filter((x) =>
selectedIDs.has(x.id)).map( x => {
console.log(x.id)
let tempLibrosData = librosData;
tempLibrosData = tempLibrosData.filter(e => e.id != x.id)
console.log(tempLibrosData)
}
这就是控制台带来的功能:
如您所见,它带回了 3 个 ID,但是当我过滤这些 ID 时,它只删除了 3 个中的 1 个?我很困惑不应该全部删除吗?
更多洞察
我有一个本地存储
const data = JSON.parse(window.localStorage.getItem("verpedidos"))
这个变量包含一堆信息:
我只想修改信息里面的变量,也就是数据。
我将信息传递给另一个变量,这样我就可以修改它而不影响其他任何东西
这是let librosData = data[0].data
然后是选择过程->
librosData.filter((x) => //where x is the row I have select
selectedIDs.has(x.id)).map( x => { // checks if such id is in the map
console.log(x.id) //shows all ids
let tempLibrosData = librosData; // variable = data
tempLibrosData = tempLibrosData.filter(e => e.id != x.id) // filter items that match the row.id
console.log(tempLibrosData) //render the new list of items
【问题讨论】:
-
您能否修复代码中的语法错误。它目前不解析,解决它的方法很重要——即,
.has(x.id))在那里做什么? -
@Andy 我遇到的问题比我问的要复杂一些,我问的确实是问题的一部分,但不是全部。我已经分开问了,因为每个问题都是不同的问题。与 firebase + DataGrid + localStorage 是一回事,我正在慢慢实现。
-
但是您的问题是“所有内容都应该被删除”。你真的仍然需要写一个minimal reproducible example 以便我们可以帮助你。 Here's a how to guide for creating working React snippets。您需要提出正确的问题(输入、代码、预期输出),否则我们只会猜测,而这不是本网站的运作方式。
-
您是否在使用复选框,然后选择它们,点击删除,并且您希望数据中代表这些项目的对象被删除,组件被更新,但保存那些没有的检查了吗?
-
请阅读我的回答。您永远不会在每次迭代时保存 librosData 的值。因此,每次过滤时,都会再次过滤原始数组。
标签: javascript arrays reactjs