我正在尝试扁平化和深度复制一个对象。
这是我尝试执行的示例:
const data = {
firstObj: {
data: 'Hi!',
nestedArrayOfObject: [{
name: 'hey',
property: 'object'
}],
},
secondObj: {
name: 'second',
nestedArray: []
},
}
const object = {}
const keys = Object.keys(data)
for (let i = 0; i < keys.length; i += 1) {
const items = Object.keys(data[keys[i]])
for (let j = 0; j < items.length; j += 1) {
object[items[j]] = data[keys[i]][items[j]]
}
}
console.log(object)
据我了解,嵌套对象仅链接到新对象,但不克隆。
如何在没有额外库的情况下正确执行此操作?
最佳答案
您可以使用JSON.parse(JSON.stringify(obj))
进行深度克隆
const data = {
firstObj: {
data: 'Hi!',
nestedArrayOfObject: [{
name: 'hey',
property: 'object'
}],
},
secondObj: {
name: 'second',
nestedArray: []
},
}
const object = {}
const keys = Object.keys(data)
for (let i = 0; i < keys.length; i += 1) {
const items = Object.keys(data[keys[i]])
for (let j = 0; j < items.length; j += 1) {
object[items[j]] = JSON.parse(JSON.stringify(data[keys[i]][items[j]]))
}
}
console.log(object)
关于javascript - 对象的变化是一成不变的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55662130/