【问题标题】:Update list of Objects with a value from an array使用数组中的值更新对象列表
【发布时间】:2021-05-18 19:33:36
【问题描述】:

我之前遇到了一个问题,并在之前得到了一些帮助,但现在我在更新/添加 link to earlier issue. 时遇到了问题

此时我的设置略有不同,因为我不知道如何更新我的数据。 在此刻。我需要从我的数组 A(文件路径)中获取数据到我的对象列表中,作为我的子对象中的另一个属性,键为“-i”。 我觉得我应该能够遍历数组并将这些值之一添加到我的对象中,但我尝试使用 reduce 和 loop 功能但无法获得我想要的输出,如果有更简单的方法从我的上一期文章开始,我很乐意回到那个状态。

//Desired ouput
{
      process0000x0000: {-i:"D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0000.png, tr: 16, tc: 16, ofr: 16, ofc: 16, outfile: 'D:\\Code\\Process\\1' },
      process0000x0001: {-i:"D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0001.png", tr: 16, tc: 16, ofr: 16, ofc: 16, outfile: 'D:\\Code\\Process\\1' },
      process0000x0002: {-i:"D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0002.png", tr: 16, tc: 16, ofr: 16, ofc: 16, outfile: 'D:\\Code\\Process\\1' }
    }

//Array A
    "outputParameters": [
    {
        "name": "0000x0000",
        "filepath": "D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0000.png"
    },
    {
        "name": "0000x0001",
        "filepath": "D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0001.png"
    },
    {
        "name": "0000x0002",
        "filepath": "D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0002.png"
    }]



 // current output
{
  process0000x0000: { tr: 16, tc: 16, ofr: 16, ofc: 16, outfile: 'D:\\Code\\Process\\1' },
  process0000x0001: { tr: 16, tc: 16, ofr: 16, ofc: 16, outfile: 'D:\\Code\\Process\\1' },
  process0000x0002: { tr: 16, tc: 16, ofr: 16, ofc: 16, outfile: 'D:\\Code\\Process\\1' }
}

更新: 所以我添加了以下内容,但我仍然收到控制台参数编译数据中每个条目的最后一个“文件路径”。我尝试了您的方式以及我在下面显示的方式,但结果相同。

  //results
 },
  process13x21: {
    '-i': 'D:\\Code\\UnitTest\\ConsoleApp\\1\\13x23.png',
    '-tr': 16,
    '-tc': 16,
    '-ofr': 16,
    '-ofc': 16,
    '-outfile': '"D:\\Code\\UnitTest\\ConsoleApp\\Process\\1"'
  },
  process13x22: {
    '-i': 'D:\\Code\\UnitTest\\ConsoleApp\\1\\13x23.png',
    '-tr': 16,
    '-tc': 16,
    '-ofr': 16,
    '-ofc': 16,
    '-outfile': '"D:\\Code\\UnitTest\\ConsoleApp\\Process\\1"'
  },
  process13x23: {
    '-i': 'D:\\Code\\UnitTest\\ConsoleApp\\1\\13x23.png',
    '-tr': 16,
    '-tc': 16,
    '-ofr': 16,
    '-ofc': 16,
    '-outfile': '"D:\\Code\\UnitTest\\ConsoleApp\\Process\\1"'
  }
}
// ADDED CODE
// loop through each data we want to add and add a property.
   ` consoleOutputParamsOBJ.forEach((obj) => {
      var processname = dynamicTaskNameBaseOBJ + obj.name;
      console.log(processname);
      //taskparamscompiled.processname['-i'] = obj.filepath;
      taskparamscompiled[processname]['-i'] = obj.filepath;

      // console.log(dynamicTaskNameBaseOBJ + obj.name);
    });
    console.log(taskparamscompiled);`

【问题讨论】:

    标签: node.js arrays array.prototype.map


    【解决方案1】:

    我不是 100% 确定我理解你的问题,但这里是。

    您可以使用[] 而不是.,通过字符串访问对象属性

    例如

    let x = {name: "chris"};
    
    x.name = 'Sam';
    
    x['name'] = 'Ben';
    

    以上都将改名property

    这是您提供的数据的代码示例。

    let data = [{
      "name": "0000x0000",
      "filepath": "D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0000.png"
    }, {
      "name": "0000x0001",
      "filepath": "D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0001.png"
    }, {
      "name": "0000x0002",
      "filepath": "D:\\Code\\UnitTest\\Tests\\Run_01_TEMP\\0000x0002.png"
    }];
    
    let result = {
      process0000x0000: {
        tr: 16,
        tc: 16,
        ofr: 16,
        ofc: 16,
        outfile: 'D:\\Code\\Process\\1'
      },
      process0000x0001: {
        tr: 16,
        tc: 16,
        ofr: 16,
        ofc: 16,
        outfile: 'D:\\Code\\Process\\1'
      },
      process0000x0002: {
        tr: 16,
        tc: 16,
        ofr: 16,
        ofc: 16,
        outfile: 'D:\\Code\\Process\\1'
      }
    }
    
    // loop through each data we want to add and add a property.
    data.forEach(obj => {
      result[`process${obj.name}`]["-i"] = obj.filepath
    })
    
    console.log(result)
    
    

    输出是:

    {
      process0000x0000: {
        -i: "D:\Code\UnitTest\Tests\Run_01_TEMP\0000x0000.png",
        ofc: 16,
        ofr: 16,
        outfile: "D:\Code\Process\1",
        tc: 16,
        tr: 16
      },
      process0000x0001: {
        -i: "D:\Code\UnitTest\Tests\Run_01_TEMP\0000x0001.png",
        ofc: 16,
        ofr: 16,
        outfile: "D:\Code\Process\1",
        tc: 16,
        tr: 16
      },
      process0000x0002: {
        -i: "D:\Code\UnitTest\Tests\Run_01_TEMP\0000x0002.png",
        ofc: 16,
        ofr: 16,
        outfile: "D:\Code\Process\1",
        tc: 16,
        tr: 16
      }
    }
    

    【讨论】:

    • 抱歉,我无法弄清楚该评论有什么问题,您能否为您的问题添加更多数据?也许是一些数据示例和上面评论的输出?
    • 对不起,我已将其添加到事故的评论部分。我在帖子底部更新了上面的原始帖子。不太熟悉 StackOverflow 教育
    • 如果有帮助,我会创建另一个帖子,stackoverflow.com/questions/66230508/…
    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多