gpt4 book ai didi

javascript - 不可变的 js map 人口

转载 作者:行者123 更新时间:2023-11-29 21:40:11 26 4
gpt4 key购买 nike

我正在尝试填充不可变 JS 映射。给定一个字段数组和一个表单,例如

{form: 'Register', fields: ['name','firstname']}

我想得到类似的东西:

{ form :
{ name: {
value: '',
hasFeedback: false
},
firstname: {
value: '',
hasFeedback: false
}
}
}

我当前的代码:

let newState = state;   
fields.forEach((field) => {
newState = newstate.setIn([form, field, 'value'], '');
newState = newstate.setIn([form, field, 'hasFeedback'], false);
});
return newState;

我是整个不可变事物的新手:这是填充不可变映射的正确方法吗?我要打破任何关于不变性的约定吗?这是最优雅的方式吗?

最佳答案

我不知道有任何约定,但最好先创建所需的结构,然后使用 Immutable.fromJS 转换它。像您现在所做的那样,逐一应用突变会产生一些不必要的开销。

可能重构您的代码:

var form = fields.reduce((acc, f) => {
acc.form[f] = {
value: '',
hasFeedback: false
};
return acc;
}, {form: {}});

var immutableForm = Immutable.fromJS(form);

关于javascript - 不可变的 js map 人口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com