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]
发表评论
-
Symbian OS S60三种开发环境的搭建,基于C++
2012-01-20 09:32 739Symbian OS S60三种开发环境的搭建,基于C++ ... -
Windows Phone开发(三)-- 导航原理分析
2012-01-20 09:32 654Windows Phone开发(三)-- 导 ... -
《Qt for Symbian》翻译系列之七:第二章 开始(1)
2012-01-20 09:32 858《Qt for Symbian》翻译系列之七:第二章 开始(1 ... -
onscripter For windows/MAC OS 中文版
2012-01-20 09:32 1480onscripter For windows/MAC OS 中 ... -
vs2008安装失败解决办法
2012-01-20 09:32 865vs2008安装失败解决办法 2011年04月22日 由 ... -
实习心得体会2
2012-01-19 14:34 681实习心得体会2 2010年06月20日 首先学习谢谢 ... -
墨子管理启发的“天龙八部”
2012-01-19 14:34 489墨子管理启发的“天龙 ... -
古代房屋,宫殿,屋内陈设介绍
2012-01-19 14:34 1229古代房屋,宫殿,屋内陈设介绍 2011年12月22日 ... -
2011-12-22
2012-01-19 14:34 7002011-12-22 2011年12月22日 室内设计原 ... -
AS3各种判断陷阱......以及处理方法
2012-01-17 04:21 634AS3各种判断陷阱......以 ... -
JavaScript的例外处理(try...catch...finally)
2012-01-17 04:21 583JavaScript的例外处理(try...catch...f ... -
转载 js中的基本常识 收藏
2012-01-17 04:21 539转载 js中的基本常识 收 ... -
JavaScript--JavaScript对象
2012-01-17 04:21 630JavaScript--JavaScript对象 2 ... -
“魅力女性精英班培训”感受
2012-01-16 03:10 762“魅力女性精英班培训”感受 2009年09月10日 ... -
会说话的女人(二)
2012-01-16 03:10 641会说话的女人(二) 2009 ... -
女性最为吸引人的品质
2012-01-16 03:10 536女性最为吸引人的品质 ... -
导购知识
2012-01-16 03:10 530导购知识 2011年05月12日 ...
相关推荐
JS 数组的 push 与 concat 区别 值得看看
JavaScript模拟数组合并concat_.docx
定义和用法 concat() 方法用于连接两个或多个数组。 该方法不会改变现有的数组,而...如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组 。 我们有两个这样的数组 var arr1 = [1,2,3]; var
如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。 */ var arr1 = [123,”aaa”]; var arr2 = [false,333]; var arr3 = [true,”ddd”]; //可以继续连接数组或者其他元素 do
主要介绍了微信小程序 数组中的push与concat的区别的相关资料,需要的朋友可以参考下
concat()可以基于当前数组中的所有项创建一个新数组。即这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。 没有给concat方法传递参数的情况下,它只是复制当前...
二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); //...
这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要将两个数组合并成为一个的情况。比如: var a = [1,2,3];...
主要介绍了不用concat解决Javascript连接多个数组,需要的朋友可以参考下
在本篇文章里小编给大家总结了关于JavaScript中concat复制数组方法知识点,有需要的朋友们可以学习下。
主要介绍了JS数组合并push与concat区别,结合实例形式分析了JavaScript中针对数组合并操作使用push与concat的区别,需要的朋友可以参考下
JS数组降维–Array.prototype.concat.apply二维数组降为一维数组循环降维concat降维apply和concat降维Vue2.6.11版本源码降维多维数组降为一维数组递归降维 把多维数组(尤其是二维数组)转化为一维数组是业务开发中...
//返回字节数据b在字节数组中的位置 public int indexOf(byte b) { } //合并两个字节数组对象 public MyByteArray concat(MyByteArray another) { } //返回部分字节数组 public MyByteArray ...
今天小编就为大家分享一篇谈谈数组拼接tf.concat()和np.concatenate()的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧