js如何复制对象的值不修改原对象
时间: 2023-06-04 22:03:33 浏览: 1134
可以使用Object.assign()方法来复制对象的值而不修改原对象,例如:
```
let obj1 = {a: 1, b: 2, c: 3};
let obj2 = Object.assign({}, obj1);
console.log(obj2);
// Output: {a: 1, b: 2, c: 3}
```
这样就可以将obj1的值复制到obj2中,obj1不会被修改。
相关问题
js对象数组去掉最后一个不改变原数组
可以使用slice方法,它可以复制一个新的数组,从而不改变原始数组。具体实现可以像这样:
```javascript
const originalArray = [{name: 'Alice'}, {name: 'Bob'}, {name: 'Charlie'}];
const newArray = originalArray.slice(0, originalArray.length - 1);
console.log(originalArray); // [{name: 'Alice'}, {name: 'Bob'}, {name: 'Charlie'}]
console.log(newArray); // [{name: 'Alice'}, {name: 'Bob'}]
```
这里使用slice方法从原数组中复制了除最后一个元素以外的所有元素,并将结果存储在一个新数组中。原始数组的值保持不变。
js 多层对象数组,修改内层的数据 不改变原数组
可以使用深拷贝的方式,先将原数组复制一份,然后对复制的数组进行修改,这样就不会改变原数组。
以下是一个示例代码:
```javascript
const originalArray = [
{
id: 1,
name: 'John',
hobbies: [
{ name: 'reading', level: 3 },
{ name: 'swimming', level: 2 }
]
},
{
id: 2,
name: 'Sarah',
hobbies: [
{ name: 'hiking', level: 4 },
{ name: 'dancing', level: 1 }
]
}
];
// 使用深拷贝复制原数组
const copiedArray = JSON.parse(JSON.stringify(originalArray));
// 修改复制的数组
copiedArray[0].hobbies[0].level = 5;
console.log(originalArray[0].hobbies[0].level); // 输出 3,原数组不变
console.log(copiedArray[0].hobbies[0].level); // 输出 5,复制的数组被修改
```
在上面的示例中,使用 `JSON.parse(JSON.stringify(originalArray))` 进行深拷贝,这样就可以得到一个原数组的复制。然后对复制出来的数组进行修改,原数组不会受到影响。