javascript - 如何重新分配函数参数
问题描述
我知道重新分配函数参数可能很糟糕,但我不太明白在这种情况下会如何完成?我正在使用 forEach 循环循环遍历待办事项列表数组(位于对象上)todos
并更改completed
属性,但我看不出我如何不能重用eachTodo
如何重写它以使其具有相同的功能但不重用eachTodo
?
this.todos.forEach((eachTodo) => {
if (completedTodos === totalTodos) {
eachTodo.completed = false;
} else {
eachTodo.completed = true;
}
});
完整的项目在这里
解决方案
您不是在此处重新分配参数。如果您要重新分配它们,则其中会有一些线条eachTodo =
-但此处并非如此。相反,您正在改变eachTodo
参数。
如果您还想避免改变参数,一种选择是使用.map
创建each的副本eachTodo
,然后在调用this.todos
之外重新分配:forEach
this.todos = this.todos.map((eachTodo) => {
if (completedTodos === totalTodos) {
return { ...eachTodo, completed: false };
} else {
return { ...eachTodo, completed: true };
}
});
(确保没有其他对单个todo
s 的引用以避免内存泄漏)
推荐阅读
- apache-kafka - 如何使用 curl 在融合 kafka 中创建带有分区的主题
- module - 我的私人代码在哪里公开?
- mongodb - 在 Mongo DB 中过滤深度嵌套的对象数组
- sql - 使用 Bash 脚本构建 SQL 更新语句
- generics - 具有通用单独参数的功能调用中的不兼容实际参数。一种使用锚定类型的方法?
- java - 奇怪的java重命名json属性名
- javascript - npm 编译警告(解析错误:Unexpected token, expected ";" )
- jenkins - 如何根据特定条件从詹金斯发布松弛通知到多个渠道
- internationalization - 带有 Nuxt.js i18n 的动态 CTA url
- android - Android 折叠工具栏,如 Android 设置应用程序