Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不可变js映射填充_Javascript_Immutable.js - Fatal编程技术网

Javascript 不可变js映射填充

Javascript 不可变js映射填充,javascript,immutable.js,Javascript,Immutable.js,我正在尝试填充一个不可变的JS映射。 给定一个字段数组和一个表单,例如 {form: 'Register', fields: ['name','firstname']} 我想得到的是: { form : { name: { value: '', hasFeedback: false }, firstname: { value: '',

我正在尝试填充一个不可变的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);

谢谢,我不确定fromJS()是否正确。也许我会对我的代码进行基准测试!