我有一个非常奇怪的案例,它表明map 函数改变了对象或lodash 错误地克隆了对象。这段代码只是一个示例:一个将对象作为参数并使用 lodash 中的 cloneDeep 返回它的副本的函数。然后我使用这个对象来生成一个图表。
const copyObject = data => {
const copy = _.cloneDeep(data);
const dataWithIndexes = copy.nodes.map((node, index) => {
node.index = index;
return node;
});
return copy;
};
export const copiedData = copyObject(sampleData);
在这种情况下,条目数据是具有对象数组的对象:
{
nodes: [
{ name: "transactions.main", layer: 0 },
...
],
links: [
{ source: 3, target: 3, value: 4 },
...
]
}
正如您所看到的那样,根本没有使用 map inside 函数,这就是重点。当我在图表生成函数中使用原始的、未修改的对象时,它工作正常,当我用上面显示的函数复制对象时,它不起作用,但是当我评论这个dataWithIndexes变量时,它又开始工作了。地图是否有可能以任何方式改变复制的对象?或者可能是 lodash 的错?它可能会错误地克隆对象,但另一方面我只使用它上面的地图,它不会以任何方式修改它。
也许有人能帮我解开这个谜T_T
弑天下
相关分类