`
yfow41yfow
  • 浏览: 13179 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

as3中数组的copy之concat

阅读更多

as3中数组的copy之concat
2010年07月18日
  [/b]     先来看一下spec中说concat是干啥D:
  Concatenates the elements specified in the parameters with the elements in an array and creates a new array. If the parameters specify an array, the elements of that array are concatenated.
  一直(没就是近个月,刚刚接触AS 
  
  )以为AS中Array的连接只是在原来数组的地址上开辟一个足够大的空间。但今天写代码才发现我错了 
  
  。先看一下代数复制的一个代码:
  var ori:Array = new Array();
  ori.push([1, 2, 3]);
  ori.push([4, 5, 6]);
  var sec:Array = new Array();
  sec.push([7,8]);
  var cur:Array = ori.concat(sec);
  trace(cur);
  输出:
  1,2,3,4,5,6,7,8
  好,再来两句:
  cur[0][0] = 20;
  trace(ori[0][0]);
  输出20, 对新数组的修改会影响到原来数组的值,再看
  cur[2][0] = 0;
  trace(sec[0][0]);
  此时输出 0, 对新数组的第三个数组(对应接上去的数组即sec)修改也会影响到被接上去的数组,
  可见,以数组实例去连接数组是一以链表的方式来实现的。
  还有一种情况,我们不用数组实例,用数组值,看下面代码:
  var thir:Array = [12,34];
  var cur:Array = ori.concat(thir);
  然后当我们再 cur[2][0] = 0;时就报错了,
  ReferenceError: Error #1056: 无法为 Number 创建属性 0。
  它不会在再生成一个维数组(的引用),而是简单把thir中的元素当成一个个的数值并赋给cur[2],即顶级数组存是的一个值,而不是指针(引用)。
  trace(cur[2]); 就是输出12了。
  trace(cur[3]); 就是输出34了。
  当
  cur[0] = sec;
  trace(cur);
  trace(ori);
  这时候cur就产生变化,但ori依然没有办法,因为cur[0],改了引用,已经不是引用ori[0]了,但些时cur[1]还是保持着原来的引用ori[1]。
  发表于: 2010-07-18 ,修改于: 2010-07-18 19:56,已浏览10次,有评论0条 推荐 投诉 
  
  
  [b]
[b][/b]
分享到:
评论

相关推荐

    JS 数组的 push 与 concat 区别

    JS 数组的 push 与 concat 区别 值得看看

    JavaScript模拟数组合并concat_.docx

    JavaScript模拟数组合并concat_.docx

    JavaScript模拟数组合并concat

    定义和用法 concat() 方法用于连接两个或多个数组。 该方法不会改变现有的数组,而...如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组 。 我们有两个这样的数组 var arr1 = [1,2,3]; var

    javascript中数组的concat()方法使用介绍

    如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。 */ var arr1 = [123,”aaa”]; var arr2 = [false,333]; var arr3 = [true,”ddd”]; //可以继续连接数组或者其他元素 do

    微信小程序 数组中的push与concat的区别

    主要介绍了微信小程序 数组中的push与concat的区别的相关资料,需要的朋友可以参考下

    JS数组方法concat()用法实例分析

    concat()可以基于当前数组中的所有项创建一个新数组。即这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。 没有给concat方法传递参数的情况下,它只是复制当前...

    【JavaScript源代码】JS数组降维的几种方法详解.docx

     二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); //...

    JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要将两个数组合并成为一个的情况。比如: var a = [1,2,3];...

    Javascript连接多个数组不用concat来解决

    主要介绍了不用concat解决Javascript连接多个数组,需要的朋友可以参考下

    JavaScript中concat复制数组方法浅析

    在本篇文章里小编给大家总结了关于JavaScript中concat复制数组方法知识点,有需要的朋友们可以学习下。

    JS数组合并push与concat区别分析

    主要介绍了JS数组合并push与concat区别,结合实例形式分析了JavaScript中针对数组合并操作使用push与concat的区别,需要的朋友可以参考下

    JS数组降维–Array.prototype.concat.apply([], arr)

    JS数组降维–Array.prototype.concat.apply二维数组降为一维数组循环降维concat降维apply和concat降维Vue2.6.11版本源码降维多维数组降为一维数组递归降维 把多维数组(尤其是二维数组)转化为一维数组是业务开发中...

    java数组作业

    //返回字节数据b在字节数组中的位置 public int indexOf(byte b) { } //合并两个字节数组对象 public MyByteArray concat(MyByteArray another) { } //返回部分字节数组 public MyByteArray ...

    谈一谈数组拼接tf.concat()和np.concatenate()的区别

    今天小编就为大家分享一篇谈谈数组拼接tf.concat()和np.concatenate()的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics