<script>
function copy(a) {
ret = {};
for (sth in a) {
temp = a[sth];
if (temp instanceof Array) {
var ddddd = [];
for (i in temp) {
var b = copy(temp[i]);
ddddd = ddddd.concat(b);
}
ret[sth] = ddddd;
}
else {
ret[sth] = a[sth];
}
}
return ret;
}
console.log
(
copy({name:"马良",age:"31",Books:[{name:"C#入门经典",title:"好书"},
{name:"js入门经典",title:"好书"}]}
)
);
</script>

运行上面的代码,发现copy方法不正确,让我的同事李鑫看了一下,后来经过大家的一番讨论,才发现里面的问题。

js语言不严谨,临时变量得使用,在递归调用时容易混淆,解决问题的方式就是不用临时变量,都用直接变量。

改变后得代码如下

   <script>
function copy(a) {
ret = {};
for (sth in a) {
if (a[sth] instanceof Array) {
ret[sth]=[];
for (i in a[sth]) {
ret[sth].push(copy(a[sth][i]));
}
}
else {
ret[sth] = a[sth];
}
}
return ret;
}
console.log
(
copy({name:"马良",age:"31",Books:[{name:"C#入门经典",title:"好书"},
{name:"js入门经典",title:"好书"}]}
)
);
</script>

可是改了以后,还是不对,谁能帮助我下。给你发个红包没问题的,100以下的都行。

通过一段时间的技术积累,终于把问题解决了,给大家献上代码

    <script>
function copy(a) {
var ret = {};
for (var sth in a) {
var temp = a[sth];
if (temp instanceof Array) {
var ddddd = [];
for (i in temp) {
var b = copy(temp[i]);
ddddd = ddddd.concat(b);
}
ret[sth] = ddddd;
}
else {
ret[sth] = a[sth];
}
}
return ret;
}
console.log
(
copy({name:"马良",age:"31",Books:[{name:"C#入门经典",title:"好书"},
{name:"js入门经典",title:"好书"}]}
)
);
</script>

结果如下

里面的变量经常会变,经过调查发现之前的变量没有var 关键字,以至于变量都是全局变量,所以上面的代码中的变量前面都加var,保持变量的独立性。

变量 var和不加var的区别在于var 声明的变量是局部变量。不用var生命的变量是全局变量。

最新文章

  1. leetcode-javascript
  2. 字符串s中从第i个位置起取长度为len的子串,函数返回子串链表
  3. JavaScript 正则表达式上——基本语法
  4. Python学习02 列表 List
  5. Octopus系列之数据上传格式要求说明
  6. Jetbrains phpstorm pycharm 免费授权注册码
  7. hdu 1434 幸福列车
  8. Chrome资源加载被Cancel的问题
  9. 在Python3.5下安装和测试Scrapy爬网站
  10. python科学计算_numpy_函数库
  11. wget命令企业级应用参数详解
  12. 模块机制 之commonJs、node模块 、AMD、CMD
  13. OO的奇妙冒险1
  14. python-django(环境配置)
  15. ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本
  16. linux下一个网卡配置多个IP
  17. Spark2 Dataset分析函数--排名函数row_number,rank,dense_rank,percent_rank
  18. 包与常用模块:time,sys。
  19. oracle JDeveloper学习
  20. SQL处理数据并发,解决ID自增

热门文章

  1. day11 作用域
  2. MT【227】换钱的总数
  3. MT【68】一边柯西一边舍弃
  4. MT【46】不动点,稳定点几何直观
  5. python—— 写入错误UnicodeEncodeError的解决办法
  6. Leetcode 29.两数相除 By Python
  7. 自学Linux Shell10.1-使用编辑器vim
  8. SharePoint 2013 Newsfeed 没有出现的解决方法
  9. 洛谷 P4127 [AHOI2009]同类分布 解题报告
  10. shell(2)-&amp;&amp; 与 || 逻辑或与非