我有一个处理数组的函数,并在最后将它们放入特定格式。我通过循环处理已处理但未格式化的输出,将其格式化为JSON并将其推送到数组来完成此操作。但是,当我将其推送到数组时,数组中已有的所有其他项都变为我刚刚推送的内容。为什么,我该如何解决?我可能错过了一些愚蠢的东西,但是我无法弄清楚问题的原因。
selectionChange
当我运行function removeLastXItems(newArr, i, format, key){
newArr.splice(newArr.length-i-1, i);
var toInsert, finalArr = [];
for (b=0;b<newArr.length;b++){
toInsert = format;
toInsert[key] = newArr[b];
finalArr.push(toInsert);
console.log(finalArr)
}
return finalArr;
}
时,我期望输出为:
removeLastXItems(["foo", "bar", "fob", "bof", "far", "boo"], 2, {itGoes:"here", andNot:"here"}, "itGoes")
但是,实际输出是:
[
{ itGoes: "foo",
andNot: "here"
},
{ itGoes: "bar",
andNot: "here"
},
{ itGoes: "fob",
andNot: "here"
},
{ itGoes: "bof",
andNot: "here"
}
]
很明显,结果正在改变,就像我在控制台中看到的那样:
[
{ itGoes: 'boo',
andNot: 'here' },
{ itGoes: 'boo',
andNot: 'here' },
{ itGoes: 'boo',
andNot: 'here' },
{ itGoes: 'boo',
andNot: 'here' }
]
显而易见,每次按下时,数组中的其他项都会改变!
我看过this similar post,但是我没有犯任何答案中概述的错误。因此,如果有人能找到我的错误,我将不胜感激!