javascript:将数据从一个对象数组复制到另一个包含现有数据的数组会产生错误的结果
复制数据不会返回正确的结果。这段代码看起来不错,但它没有给我正确的结果。我错过什么了吗?看起来好像它正在使用同一个实例将数据复制到对象中javascript:将数据从一个对象数组复制到另一个包含现有数据的数组会产生错误的结果,javascript,typescript,Javascript,Typescript,复制数据不会返回正确的结果。这段代码看起来不错,但它没有给我正确的结果。我错过什么了吗?看起来好像它正在使用同一个实例将数据复制到对象中 let sidList = [ { taskTargetHosts: [['host1'], ['host1']] }, { taskTargetHosts: [['host3'], ['host3']] }, ]; let jobData = [ { config: { tasks: [{ targetHosts: [] }, {
let sidList = [
{ taskTargetHosts: [['host1'], ['host1']] },
{ taskTargetHosts: [['host3'], ['host3']] },
];
let jobData = [
{ config: { tasks: [{ targetHosts: [] }, { targetHosts: [] }] } },
{
config: {
tasks: [{ targetHosts: [] }, { targetHosts: [] }],
},
},
];
let dataIndx = 0;
for (let sidRow of sidList) {
for (
let taskIndx = 0;
taskIndx < jobData[dataIndx].config.tasks.length;
taskIndx++
) {
jobData[dataIndx].config.tasks[taskIndx].targetHosts =
sidRow.taskTargetHosts[taskIndx];
}
dataIndx++;
}
我得到的是:
[{"config": {"tasks": [{"targetHosts": ["host1"]},{"targetHosts": ["host1"]}]}},{"config": {"tasks": [{"targetHosts": ["host1"]},{"targetHosts":["host1"]}]}}]
这似乎对我有效你的问题可能在别处
let sidList = [
{ taskTargetHosts: [['host1'], ['host1']] },
{ taskTargetHosts: [['host3'], ['host3']] },
];
let jobData = [
{ config: { tasks: [{ targetHosts: [] }, { targetHosts: [] }] } },
{ config: { tasks: [{ targetHosts: [] }, { targetHosts: [] }] } },
];
let dataIndx = 0;
for (let sidRow of sidList) {
for ( let taskIndx = 0; taskIndx < jobData[dataIndx].config.tasks.length; taskIndx++ ) {
jobData[dataIndx].config.tasks[taskIndx].targetHosts = sidRow.taskTargetHosts[dataIndx];
}
dataIndx++;
}
console.log (jobData[0].config.tasks[0]); //{ targetHosts: [ 'host1' ] }
console.log (jobData[0].config.tasks[1]); //{ targetHosts: [ 'host1' ] }
console.log (jobData[1].config.tasks[0]); //{ targetHosts: [ 'host3' ] }
console.log (jobData[1].config.tasks[1]); //{ targetHosts: [ 'host3' ] }
let sidList=[
{taskTargetHosts:[['host1'],['host1']},
{taskTargetHosts:[['host3'],['host3']},
];
让jobData=[
{config:{tasks:[{targetHosts:[]},{targetHosts:[]}]},
{config:{tasks:[{targetHosts:[]},{targetHosts:[]}]},
];
设dataIndx=0;
for(让sidRow成为sidList的一部分){
对于(让taskIndx=0;taskIndx
实际上,这段代码运行良好-请参阅:或者我理解错了什么?
let sidList = [
{ taskTargetHosts: [['host1'], ['host1']] },
{ taskTargetHosts: [['host3'], ['host3']] },
];
let jobData = [
{ config: { tasks: [{ targetHosts: [] }, { targetHosts: [] }] } },
{ config: { tasks: [{ targetHosts: [] }, { targetHosts: [] }] } },
];
let dataIndx = 0;
for (let sidRow of sidList) {
for ( let taskIndx = 0; taskIndx < jobData[dataIndx].config.tasks.length; taskIndx++ ) {
jobData[dataIndx].config.tasks[taskIndx].targetHosts = sidRow.taskTargetHosts[dataIndx];
}
dataIndx++;
}
console.log (jobData[0].config.tasks[0]); //{ targetHosts: [ 'host1' ] }
console.log (jobData[0].config.tasks[1]); //{ targetHosts: [ 'host1' ] }
console.log (jobData[1].config.tasks[0]); //{ targetHosts: [ 'host3' ] }
console.log (jobData[1].config.tasks[1]); //{ targetHosts: [ 'host3' ] }