我知道对reassign function parameters可能会很不好,但是我不太了解在这种情况下如何做?我正在使用forEach循环来遍历待办事项列表数组(在对象上)todos
并更改completed
属性,但是我看不到如何无法重用{{1} }
如何将其重写以使其具有相同的功能但不重复使用eachTodo
?
eachTodo
完整项目here
答案 0 :(得分:2)
您不在此处重新分配参数。如果您要重新分配它们,则其中将带有eachTodo =
的某些行-但这不是这种情况。而是变异 eachTodo
参数。
如果您还希望避免更改参数,则一种选择是使用.map
为每个eachTodo
创建一个副本,然后重新分配{{1 }}在this.todos
通话之外:
forEach
(请确保没有其他对各个this.todos = this.todos.map((eachTodo) => {
if (completedTodos === totalTodos) {
return { ...eachTodo, completed: false };
} else {
return { ...eachTodo, completed: true };
}
});
的引用,以避免内存泄漏)
答案 1 :(得分:0)
您的代码未分配给eachTodo
,因此我看不到有关重新分配参数的讨论的链接如何相关。
“重用eachTodo
”是什么意思?如果您是想让代码少提及变量名,那么这是一种方法:
if (completedTodos === totalTodos) {
eachTodo.completed = false;
} else {
eachTodo.completed = true;
}
可以减少(通过拉出公用的eachTodo.completed =
部分):
eachTodo.completed = completedTodos === totalTodos ? false : true;
此行可以进一步简化(通常,只要您有一个?:
运算符,且其中一个分支只是true
或false
,就可以简化):
eachTodo.completed = completedTodos !== totalTodos;