【发布时间】:2018-06-13 05:41:51
【问题描述】:
有问题的代码 = (My Gist)
我看到了几个与这个类似的问题,但我无法从他们那里得到适合我的情况的答案:
我的问题是以下两个“console.log()”如何正确显示:
console.log(delTodos[index]); // returns object called
console.log('the above is index ' + index); // returns appropiate index of object called
但是当我使用时
const newArr = delTodos.filter( () => delTodos[index] === index);
this.setState({ todos: newArr});
它会从显示中删除整个数组。
我的理论是:
所以我要处理 2 个循环; (MAP x 3) 和 (FILTER x 3) 用于每次地图迭代。
第一个 MAP 循环 = ((index = 0)(.filter === index)); //自过滤器*3返回true
第二个 MAP 循环 = ((index = 1)(.filter === index)); //自过滤器*3返回true
第三个 MAP 循环 = (index = 2(.filter === index)); //自过滤器*3返回true
如果循环像上面描述的那样工作,那么使用 !== 将永远不会删除任何内容,因为过滤器的比较总是错误的。
由于地图是循环函数并且导致过滤器循环至少相等三次,因此上述控制台日志是否应该在每次点击时至少显示 3 次?
我试图做的是过滤掉上面两个控制台日志显示/描述的单个索引。不是整个数组。
【问题讨论】:
-
这里的代码:
.filter( () => delTodos[index] === index),不要忘记传入值和索引(如果需要)。要使这条线正常工作,您需要这样做:.filter( (value, index) => delTodos[index] === index)... 或只是... ( _ , index) => ...。
标签: javascript arrays reactjs filter