gpt4 book ai didi

JavaScript 深度复制包含嵌套对象、数组和函数的数组?

转载 作者:行者123 更新时间:2023-12-01 01:31:02 24 4
gpt4 key购买 nike

我有一个像这样结构的数组,我正在尝试获取它的副本(以修改并用于 React setState())。在 Python 中,我可以使用 copy.deepcopy() 但我找不到在 JavaScript 中执行此操作的简单方法。

notes=[
{
contents: "Hello World 1",
function: console.log,
children: [
{
contents: "Hello World A",
function: console.log,
children: []
},
]
},
{
contents: "Hello World 2",
function: console.log,
children: []
}
]

我在 stackoverflow 上找到了这篇文章和类似的解决方案,但它们都不适合我。 https://medium.com/@Farzad_YZ/3-ways-to-clone-objects-in-javascript-f752d148054d两种解决方案都只是浅拷贝,并且 JSON.parse 不适用于函数。

我想要一个函数,可以深度复制包含任何嵌套 JavaScript 数据类型的任意结构的数组或对象。

我不想重新发明轮子,编写复杂的递归函数来遍历和克隆所有内容,有没有现有的解决方案?

最佳答案

编辑-您可以使用下面的解决方案或仅导入 Lodash 并使用此 https://lodash.com/docs/#cloneDeep

<小时/>

我正在用我找到的解决方案回答我自己的问题。有人在我链接的文章的评论部分发布了此内容,它似乎有效

notes=[
{
contents: "Hello World 1",
function: console.log,
children: [
{
contents: "Hello World A",
function: console.log,
children: []
},
]
},
{
contents: "Hello World 2",
function: console.log,
children: []
}
]

function deepCopy(src) {
let target = Array.isArray(src) ? [] : {};
for (let key in src) {
let v = src[key];
if (v) {
if (typeof v === "object") {
target[key] = deepCopy(v);
} else {
target[key] = v;
}
} else {
target[key] = v;
}
}

return target;
}

关于JavaScript 深度复制包含嵌套对象、数组和函数的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53273218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com