【发布时间】:2019-09-18 08:36:55
【问题描述】:
我有一个非常奇怪的情况,它表明 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 根本没有使用,这就是重点。当我在图表生成函数中使用原始的、未修改的对象时,它工作正常,当我使用上面显示的函数复制对象时,它不起作用,但是当我评论这个 dataWithIndexes 变量时它开始再次工作。 map 是否有可能以任何方式改变复制的对象?或者也许是 lodash 的错?它可能会错误地克隆对象,但另一方面我只在它上面使用地图,它不会以任何方式修改它。
也许有人可以帮我解开这个谜T_T
谢谢
【问题讨论】:
标签: javascript lodash