【发布时间】:2020-12-28 08:21:41
【问题描述】:
我试图复制一个对象。我想用算法深度优先搜索。
function dfs(data) {
let stack = [];
let res = {};
for (let key in data) {
stack.push({ data: data[key], keyData: key });
while (stack.length !== 0) {
const first = stack.shift();
if (typeof first.data === "object") {
for (let key in first.data) {
if (typeof first.data[key] === "object") {
stack.push({ data: first.data[key], keyData: key });
} else {
res[first.parentKey] = first.keyData;
}
}
} else {
res[first.keyData] = first.data;
}
}
}
return res;
}
const data = {
a: 1,
b: 2,
c: {
d: 3,
g: {
e: 4,
r: {
y: 5,
},
},
},
};
const newData = dfs(data);
data.c.g.e = 5000;
data.c.g.d = 90000;
console.log("Original data", data);
console.log("Copied data", newData);
我创建了一个函数,它将复制我的对象,而不使用旧对象上的链接。我有一个问题,我的函数没有正确计算结果。我在哪里犯错了?
【问题讨论】:
标签: javascript depth-first-search deep-copy