【发布时间】:2019-09-05 01:45:51
【问题描述】:
下面是我的代码
let traces = { ref: null, min: null, max: null, avg: null };
let learning = {
"Application": "b3",
"t": [
{
"d": 2,
"BinaryType": "Current"
},
{
"d": 3,
"BinaryType": "Max"
},
{
"d": 4,
"BinaryType": "Avg"
},
{
"d": 5,
"BinaryType": "Min"
}
]
};
let traceArr = Object.assign([],learning.t);
traceArr.forEach(trace => {
if (trace.BinaryType == 'Current') {
traces.ref = Object.assign({}, learning);
traces.ref.t = [];
traces.ref.t.push(trace);
traces.ref.t[0].BinaryType = 'Refeyrence';
}
if (trace.BinaryType == 'Min') {
traces.min = Object.assign({}, learning);
traces.min.t = [];
traces.min.t.push(trace);
}
if (trace.BinaryType == 'Max') {
traces.max = Object.assign({}, learning);
traces.max.t = []
traces.max.t.push(trace);
}
if (trace.BinaryType == 'Avg') {
traces.avg = Object.assign({}, learning);
traces.avg.t = [];
traces.avg.t.push(trace);
}
});
console.log("Output",traces);
console.log("Traces- Should be non mutated",traceArr);
console.log("Original",learning.t)
我假设当我修改数组的内容时,原始(学习)对象的内容不应该受到影响。
两个问题:
- 我假设 traces.ref.t = [];应该更改新创建的对象中的引用。不是吗?
-
console.log("Original",learning.t) 输出如下 表示内容已更改(文本 Refeyrence 在数组迭代期间修改)。为什么会这样?还有什么 我应该做些什么来避免它?
'原创' [ { d: 2 , BinaryType:“参考” }, { d: 3 , 二进制类型:“最大” }, { d: 4 , 二进制类型:“平均” }, { d: 5 , 二进制类型:“最小” } ]
【问题讨论】:
标签: javascript arrays typescript