js对象/数组深度复制
今天碰到个问题,js对象、数组深度复制;之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下:
function clone(obj) {
var a;
if(obj instanceof Array){
a=[];
for(var i=0;i<obj.length;i++){
a.push(clone(obj[i]))
}
}else if(obj instanceof Function){
return eval('('+obj.toString()+')')
}else if(obj instanceof Object){
a={};
for(var i in obj){
a[i]=clone(obj[i])
}
}else {
return obj;
}
return a;
}
特意实验了下发现效果还不错:
var obj= {
'name':['tom','lizi'],
'age':{
'xiaoming':{
'nihao':'en'
},
'en':undefined,
'h':function s() {
var ggg={
'hell':'e'
}
console.log(ggg)
}
}
}
console.log(clone(obj));//!==obj
function xx() {
var obj= {
'name':['tom','lizi'],
'age':{
'xiaoming':{
'nihao':'en'
},
'en':undefined,
'h':function s() {
var ggg={
'hell':'e'
}
console.log(ggg)
}
}
}
return obj;
}
console.log(clone(xx)()==obj)//false
如有问题欢迎指出
js对象/数组深度复制的更多相关文章
- js对象数组深度去重和深度排序
使用collect.js处理数组和对象 https://github.com/ecrmnn/collect.js/# 引入collect.js https://github.com/ecrmnn/co ...
- js中对象的深度复制
// 对象的深度复制 cloneObj(oldObj) var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Arra ...
- js对象的深度克隆
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- js对象数组中的某属性值 拼接成字符串
js对象数组中的某属性值 拼接成字符串 var objs=[ {id:1,name:'张三'}, {id:2,name:'李四'}, {id:3,name:'王五'}, {id:4,name:'赵六' ...
- JS对象—数组总结(创建、属性、方法)
JS对象—数组总结(创建.属性.方法) 1.创建字符串 1.1 new Array() var arr1 = new Array(); var arr2 = new Array(6); 数组的长度为6 ...
- js对象数组多字段排序
来源:js对象数组按照多个字段进行排序 一.数组排序 Array.sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序. 一般用法:(数组元素从小大进行排序) var a = ...
- js对象进行浅复制,深拷贝的方法
js对象浅拷贝和深拷贝详解 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ...
- 转载---Java集合对象的深度复制与普通复制
原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...
随机推荐
- 解决一阻塞语句CPU直降15%
原本只是部署作业获取数据库中阻塞语句,中午测试汇集阻塞数据,发现某一服务器写入386行,而其他服务器只写入几行.登录对应服务器查看详细信息,发现有四个时间点分别写入100来行记录对于第一行:会话183 ...
- JS Note1
1.JavaScript 简史 JavaScript 诞生于1995 年.当时,它的主要目的是处理以前由服务器端语言(如Perl)负责的一些输入验证操作 如今,JavaScript 的用途早已不再局限 ...
- apache on centos
httpd https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-apache-startstop.html
- 跟着思维导图学习javascript
1.javascript 变量 2.javascript 运算符 3.javascript 数组 4.javascript 流程语句 5.javascript字符串函数 6.javascript 函数 ...
- 把Mongodb配置成windows服务
在mongodb/bin 下运行命令窗口需要配置日志和db路径,如下:mongod --logpath d:\mongo\logs\logfilename.log --logappend --dbpa ...
- smarty 模板几个例子
一.assign和display方法的使用以及几个变量调节器 header("content-type:text/html;charset=utf-8");//加载Smarty引擎 ...
- git-----------------git:如何让git识别我修改了文件夹名字和文件名字的大小写问题。
修改每个项目里面的隐藏的.git文件里面的config文件.将箭头指的原本是true改成false.
- Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...
- linux系统无法启动解决方案
windows和linux双系统一般先安装Windows,分两个主分区,把Linux安装在另外的主分区上.Linux编译内核,添加NTFS分区支持,然后Mount NTFS 分区即可访问Windows ...
- 约在CBD,吃饭
午饭当然是外卖. CBD上班的同仁们不用约,都去了一间叫“大食堂”的餐厅. 它在商业街繁华地段的二楼,有1000平米.你不知道么,餐馆们都躲到找不着的角落,变成了厨房,这里的租金便宜得很.但它不做饭, ...