【发布时间】:2020-07-18 19:35:42
【问题描述】:
如何创建一个纯函数来更新在另一个函数中初始化的对象 类似:
parentFunction = (inputs: object[], condtionList: string[]) => {
const newObject = {f1: val1[], f2: val2[], f3: val3[]...}
inputs.forEach(input => {
if(condition1){
updateNewObject(condtion1, newObject, input, conditionList)
}
.
.
.
}
return newObject
}
下面的函数是不纯的,因为它正在更新 newObject(改变输入)我如何将它转换为纯函数?
updateNewObject(condition, newObject, input, conditionList) {
const i = conditionList.indexOf(input.condition)
if(i === 0){
newObject.f1.push(input)
}
else if(i === 1) {
newObject.f2.push(input)
}
.
.
.
}
上面没有返回值。它将 newObject 作为输入,并根据一些条件将值推送到 newObject 的属性。反正有没有使上述功能变得纯粹?还是我必须重新考虑如何更新 newObject?
【问题讨论】:
-
JS
Object/Array类型不依赖于设计的可变性!只是不要改变输入。如果您关心效率,请使用不可变数据类型。 -
你是说你不能改变
parentFunction?
标签: javascript typescript functional-programming purely-functional