js对象或数组深复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>深拷贝</title>
</head>
<body>
<script>
var isArray = function (object) {
return object && typeof object === 'object' && object.constructor === Array;
}
var deepCopy2=function (obj) {
var result=obj.constructor===Object?{}:[];
for(key in obj){
if(!obj.hasOwnProperty(key))continue;//防止遍历原型上的属性
if( typeof obj[key]==='object'){
result[key]=deepCopy2(obj[key]);
}
else{
result[key]=obj[key];
}
}
return result;
};
var x = {
a: 1,
b: ["a","b","c",{"key":"value"}]
};
var arr=["a","bb","cc",["wo","shi","haoren"]];
var arr2=deepCopy2(arr);
var arr3=deepCopy2(arr);
arr2[0]="A";
</script>
</body>
</html>
js对象或数组深复制的更多相关文章
- 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)
背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...
- 再议js的传递和深复制
病理 基本类型的传递就是按值传递,比如说 var a = 1; var b = a; b = 3; console.log(a,b);//1,3 很明显,a的值并未因为b的值改变而变化,这是因为a只是 ...
- JS对象和数组深浅拷贝总结②
在实际开发中遇到过太多次深拷贝浅拷贝的问题.总结一下~ JS数据存储和深浅拷贝实际运用① 这是之前写过的一篇文章,解决浅拷贝深拷贝的问题只说了一种方法,今天来补充一下. 介绍深拷贝和浅拷贝都在上一篇文 ...
- JS对象和数组在谷歌浏览器中引用存储的表现
大家都知道JS的数据分为基本类型和引用类型.具体什么不说了,今天主要说说对象和数组作为引用类型在谷歌浏览器中的表现. 首先,问题是这么发现的.我在控制台使用console打印了一个数组,然后对数组进行 ...
- js 对象,数组,字符串,相互转换
1:对象转换数组 let obj = {'val1':1, 'val2':2, 'val3':3, 'val4':4}; var arr = [] for (let i in obj) { //取键 ...
- 检测js对象是不是数组类型?
面试时候被人问如何检测一个未知变量是不是数组类型,丢脸啊,老祖宗的脸都丢没了,这都不会,回家啃书本去吧!!! var a = [];方法一:Array.isArray([]) //true type ...
- js对象、数组转换字符串
对象转换成字符串需要使用toString()方法. 1 var a = function(){ 2 console.log(111); 3 }; 4 var b = a.toString(); 5 c ...
- js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作
例如你需要这样格式的数据: [{"name":"合肥市","arrey":[{"lat":"31.862323 ...
- js 对象与数组相互转化的快捷方法 Object.keys()、Object.values()、Object.entries()
Object.keys() Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性.这些属性的顺序与手动遍历该对象属性时的一致. 例如: let ...
随机推荐
- UML-逻辑架构和包图-概述
回顾前几章学习了用例模型,本章开始学习设计模型.
- let和var的区别
在JavaScript中,定义变量的关键词一般用var,但还有一种定义变量的关键词叫let.两者的作用域范围不一样,我们可以将var理解为定义的是一个全局变量,而let定义的是一个局部变量.故let常 ...
- CF 1130C Connect
链接:https://codeforces.com/contest/1130/problem/C C. Connect time limit per test 1 second memory limi ...
- Java自学-泛型 通配符
Java 泛型通配符 ? extends super 的用法 示例 1 : ? extends ArrayList heroList<? extends Hero> 表示这是一个Hero泛 ...
- C语言笔记 16_标准库&stdio&stdlib&string&time
<stdio.h> 简介 stdio .h 头文件定义了三个变量类型.一些宏和各种函数来执行输入和输出. 库变量 下面是头文件 stdio.h 中定义的变量类型: 序号 变量 & ...
- OpenCV On Android环境配置最新&最全指南(Eclipse篇)
简介 本教程是经过本人多次踩坑,并参考网上众多OpenCV On Android的配置教程总结而来,尽希望能帮助学习移动图像处理的朋友们少走弯路.这也是本人第一次在简书上发布文章,如有不足,希望各位d ...
- GCC的分支预测优化__builtin_expect
智能指针笔记 GCC的原子操作函数 将流水线引入cpu,可以提高cpu的效率.更简单的说,让cpu可以预先取出下一条指令,可以提供cpu的效率.如下图所示: 取指令 执行指令 输出结果 取指令 执行 ...
- Unable to cast object of type 'System.String' to type 'System.Int32'.
原因 数据库中 code 字段 类型为 varchar 而实体的类型为 int 导致string 类型无法转化为int 类型而报错 public int code { get; set; } 参考: ...
- is,==区别,编码转换
一.is 比较的是内存地址 == 比较的是两边的值 二.编码扩展: 1字节(bytes) = 8 位(bit) 1024byte = 1kb 1024kb = 1MB 1024MB = 1GB 102 ...
- tcp和udp的socket形式
Sockets编程有三种: (1).流套接字(SOCK_STREAM): (2).数据包套接字(SOCK_DGRAM): (3).原始套接字(SOCK_RAW): TCP是流套接字 UCP是数据包套接 ...