对象是一成不变的变化吗?
Is object changes immutably?
我正在尝试展平和深度复制一个对象。
这是我尝试做的一个例子:
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)
据我了解,嵌套对象仅链接到新对象,而不是克隆。
没有额外的库如何正确地做到这一点?
let new_object = Object.assign({}, your_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)
const data = {
firstObj: {
data: 'Hi!',
nestedArrayOfObject: [{
name: 'hey',
property: 'object'
}],
},
secondObj: {
name: 'second',
nestedArray: []
},
};
const object = Object.assign({}, data.firstObj, data.secondObj);
console.log(object);
或者,使用 ECMAScript 6 中引入的传播行为 ...
:
const data = {
firstObj: {
data: 'Hi!',
nestedArrayOfObject: [{
name: 'hey',
property: 'object'
}],
},
secondObj: {
name: 'second',
nestedArray: []
},
};
const object = { ...data.firstObj, ...data.secondObj };
console.log(object);
我正在尝试展平和深度复制一个对象。
这是我尝试做的一个例子:
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)
据我了解,嵌套对象仅链接到新对象,而不是克隆。
没有额外的库如何正确地做到这一点?
let new_object = Object.assign({}, your_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)
const data = {
firstObj: {
data: 'Hi!',
nestedArrayOfObject: [{
name: 'hey',
property: 'object'
}],
},
secondObj: {
name: 'second',
nestedArray: []
},
};
const object = Object.assign({}, data.firstObj, data.secondObj);
console.log(object);
或者,使用 ECMAScript 6 中引入的传播行为 ...
:
const data = {
firstObj: {
data: 'Hi!',
nestedArrayOfObject: [{
name: 'hey',
property: 'object'
}],
},
secondObj: {
name: 'second',
nestedArray: []
},
};
const object = { ...data.firstObj, ...data.secondObj };
console.log(object);