js 字符串 深拷贝的方法
时间: 2024-01-23 11:13:52 浏览: 29
在JavaScript中,由于字符串是基本数据类型,因此不需要进行深拷贝。如果你需要复制一个字符串,只需要将其赋值给另一个变量即可。例如:
```javascript
let str1 = 'hello';
let str2 = str1; // 将str1赋值给str2
console.log(str2); // 输出:hello
```
如果你需要复制一个对象,其中包含字符串类型的属性,可以使用JSON.parse()和JSON.stringify()方法进行深拷贝。例如:
```javascript
let obj1 = {name: 'Tom', age: 18, hobby: ['reading', 'music']};
let obj2 = JSON.parse(JSON.stringify(obj1)); // 使用JSON.parse()和JSON.stringify()进行深拷贝
console.log(obj2); // 输出:{name: 'Tom', age: 18, hobby: ['reading', 'music']}
```
相关问题
js对象数组深拷贝方法
JavaScript 中的对象数组深拷贝方法有很多种,下面列举几种常见的方法:
1. 使用 JSON.stringify 和 JSON.parse 方法
这种方法利用 JSON 对象的 stringify 和 parse 方法,将对象转换为字符串再转换回来,达到深拷贝的目的。
```javascript
let arr = [{name: "张三", age: 18}, {name: "李四", age: 20}];
let newArr = JSON.parse(JSON.stringify(arr));
```
2. 递归复制对象
这种方法通过递归复制对象的每个属性和属性值,达到深拷贝的目的。
```javascript
function deepClone(obj) {
let newObj = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
newObj[key] = deepClone(obj[key]);
} else {
newObj[key] = obj[key];
}
}
return newObj;
}
let arr = [{name: "张三", age: 18}, {name: "李四", age: 20}];
let newArr = deepClone(arr);
```
3. 使用第三方库
还有一些第三方库(如 lodash、jQuery 等)提供了深拷贝的方法,可以直接调用。
```javascript
let arr = [{name: "张三", age: 18}, {name: "李四", age: 20}];
let newArr = _.cloneDeep(arr); // 使用 lodash 库
```
js对字符串进行浅拷贝
可以使用字符串的slice方法进行浅拷贝,如下所示:
```
let str1 = "Hello World";
let str2 = str1.slice();
console.log(str2); // Hello World
```
注:slice方法不改变原字符串,返回一个新字符串。如果不传参数,则复制整个字符串,相当于深拷贝。