将数组重新构造为对象Javascript/Nodejs中的对象列表
我想要的输出在这篇文章的底部,我想删除数组并在对象中放置一个对象列表 我正在分享我的map函数,因为我希望里面有一个方法可以得到我想要的输入,而我只是做得不正确 如果我所做的没有意义,我希望有更好的方法来处理这些数据 起始数据(./updatepayloadTEMP.json) 变数将数组重新构造为对象Javascript/Nodejs中的对象列表,javascript,node.js,arrays,object,Javascript,Node.js,Arrays,Object,我想要的输出在这篇文章的底部,我想删除数组并在对象中放置一个对象列表 我正在分享我的map函数,因为我希望里面有一个方法可以得到我想要的输入,而我只是做得不正确 如果我所做的没有意义,我希望有更好的方法来处理这些数据 起始数据(./updatepayloadTEMP.json) 变数 let UpdatedTaskOutput = fs.readFileSync('./updatepayloadTEMP.json'); let Updatedtaskoutputjson = JSON.pa
let UpdatedTaskOutput = fs.readFileSync('./updatepayloadTEMP.json');
let Updatedtaskoutputjson = JSON.parse(UpdatedTaskOutput);
var dynamictaskdetails = Updatedtaskoutputjson.outputparameters;
映射函数
var taskparamscompiled = dynamictaskdetails.map(function (elem) {
taskname = tasknamefromworkflowdef + elem.name;
taskparms = taskparamsobj;
return {
[taskname]: taskparms,
};
});
我当前为taskparamscompiled获得的内容
[
{
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"',
},
},
];
我想要什么
{
"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"'
},
}
我错过了一些东西,更新:
我现在需要将文件路径(“文件路径”:“D:\\code\\ImageTiling\\6\\0000x0000.png”)
像这样放入进程对象中
process0000x0000: {
filepath: "D:\\Code\\ImageTiling\\6\\0000x0000.png"
tr: 16,
tc: 16,
ofr: 16,
ofc: 16,
outfile: '"D:\\Code\\Process\\1"',
}
Array.prototype.map()将返回一个数组。您可能想使用Array.prototype.reduce()
我想这会给你你想要的输出
const dynamictaskdetails = [
{
name: '0000x0000',
filepath: 'D:\\Code\\ImageTiling\\6\\0000x0000.png'
},
{
name: '0000x0001',
filepath: 'D:\\Code\\ImageTiling\\6\\0000x0001.png'
},
{
name: '0000x0002',
filepath: 'D:\\Code\\ImageTiling\\6\\0000x0002.png'
}
];
const taskparamsobj = {
tr: 16,
tc: 16,
ofr: 16,
ofc: 16,
outfile: 'D:\\Code\\Process\\1'
};
const taskparamscompiled = dynamictaskdetails.reduce((accumulator, elem) => {
const taskname = 'process' + elem.name;
return {
...accumulator,
[taskname]: taskparamsobj,
};
}, {});
console.log(taskparamscompiled);
这导致了以下输出:
{
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' }
}
非常感谢,我有一种感觉,我没有使用Array.prototype.map(),如果我应该在这里回答或询问,但是,如果我想将文件路径从./updatepayloadTEMP.json添加到具有其他属性的子对象,该怎么办?最后,我用我的当前状态发布了另一篇帖子@乔什·波斯皮西尔
{
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' }
}