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 不创建新实例_Javascript_Reactjs_Object_Redux_Mapping - Fatal编程技术网

Javascript 不创建新实例

Javascript 不创建新实例,javascript,reactjs,object,redux,mapping,Javascript,Reactjs,Object,Redux,Mapping,我有以下代码,为Redux构建操作负载: export function getInfoFromAPI() { const initialAction = { type: types.GET_SETTLE_SHEETS_FROM_LOCAL_API }; let returnedAction = {}; let payloadBuild = {}; return dispatch => { return APItools.getInfoFromLoc

我有以下代码,为Redux构建操作负载:

  export function getInfoFromAPI() {
  const initialAction = {
    type: types.GET_SETTLE_SHEETS_FROM_LOCAL_API
  };
  let returnedAction = {};
  let payloadBuild = {};
  return dispatch => {
    return APItools.getInfoFromLocalAPI()
      .then(jsonResult => {
        Object.keys(jsonResult).map( (resultArrayId) => {
          debugger;
          const { foo, bar, foobar, foofoo, barbar} = jsonResult[resultArrayId];
          payloadBuild = _.merge({}, 
            {
              [barbar]: {
                foo: foo,
                bar: bar,
                foobar: foobar,
                foofoo: foofoo,
                barbar: barbar
              }
            });
        });
        returnedAction = Object.assign({}, initialAction,
          {
            payload: payloadBuild
          });
        dispatch(returnedAction);
      });
  };
}
我试图构建一个json对象,该对象将包含来自本地API的数据。当我以前使用Object.assign时,它会根据键添加信息,并按照您认为的方式将其附加到预先存在的对象

我尝试了lodash uz.merge和Object.assign两种方法,对它们进行切换,但似乎都不起作用。。。它不断用map函数中的下一个值覆盖键[barbar],即使这样

[barbar] = 1 
然后


它将替换钥匙及其所有子项。。。。为什么?我该如何解决这个问题?当我以前使用Object.assign时,它只会将新键附加到对象上,但我认为它一次只能附加一个键。这是我第一次使用map,我假设map会继续附加具有唯一键值的新对象。

您忘记了合并旧值

let buildValue = {}

arrayWithStuff.map(info => {
  buildValue = Object.assign(buildValue, {
    [info.bar] : {
      Other stuff..
    })
将每个结果与新的空对象第一个参数合并

祝你好运

找到了答案:

payloadBuild = _.merge({}, payloadBuild <---- this needed to be added
            {
              [barbar]: {
                foo: foo,
                bar: bar,
                foobar: foobar,
                foofoo: foofoo,
                barbar: barbar
              }
            });

是的!我刚刚发现,正如你发布的:-谢谢。我会把你的答案记下来,给你打分
payloadBuild = _.merge({}, payloadBuild <---- this needed to be added
            {
              [barbar]: {
                foo: foo,
                bar: bar,
                foobar: foobar,
                foofoo: foofoo,
                barbar: barbar
              }
            });