首页 > 代码库 > js中对数组的操作-------Day49
js中对数组的操作-------Day49
今天碰到了一个问题:easyui的使用中,datagrid表格的高度怎样改变(设定成一个固定的高度),看了半天文档,也从网上查了些。还楞是没弄出来,有点小郁闷。这easyui在某些情况情况下确实好用了,可要任意调整实在是有些麻烦啊。
做不出就先放放,回家了就换个心情。
昨天在回放拖拽轨迹的实现中。对数组的应用成了关键的一步,于是特意查看了一些javascript对数组的操作。这里来记录下:
“增删改查”这四个字相信都不陌生。我们绝大多数的工作都是在进行这些操作,而这些操作却有一个大前提:存在。存在一个让你增删改查的对象,假设不存在,那我们就先来创建一个:
1、创建
var a=new Array(); var b=new Array(3); var c=new Array([‘qwe‘,"12313",123]); var d=["asd","qwe","zxc"];
通常我们创建一个数组的方式为上面四种。然后
*alert(a+"----------"+b+"---"+c+"--------"+d);
这样我们能够清晰的看到。第一个是空的。而第二个有两个逗号“,”则说明有3个空,后面的则是正常输出,可是
*alert(typeof(a)+"----------"+typeof(b)+"---"+typeof(c)+"--------"+typeof(d))来看,我们都成功的创建了一个对象。
创建过程中我们存在四种方法。到底哪一种更好呢。我们没法评判,不同情况下各有千秋吧。但有一种情况我们须要特别注意
var test01=new Array(3); var test02=new Array([3]);
事实上这颇有些迷惑性。只是一个中括号,意义却不同样。
前一个为创建一个length长度为3的数组,后一个则为创建一个长度为1,且第一个值为3的数组,这样放在一起的话可能我们都明确。但是就给你不论什么当中一个,假设不细致。极有可能出错呢。
而还有一方面new Array([5,2])和[5,2]这两个数组同样么,且在查看中解答。
2、查看
既然创建成功了,我们就能够查看这个对象的属性或者值。或者其他。
首先我们知道查看一个数组最好的方式是将它遍历出来,通常的写法应该为:
for(var i=0;i<d.length,i++){ alert(d[i]); }这里就不一一展示了,仅仅记录几个颇为迷惑的地方:
*alert(a[0]+"-----"+b[0]+"---"+c[0]+"-----"+d[0]+a[2]+"-----"+b[2]+"---"+c[2]+"-----"+d[2]);这样我们来看输出结果
这里我们就攻克了上面创建中的问题,new Array(【5,2】)和【5。2】还是不一样,前者表示说创建了一个数组,数组含有一个元素,而后者则说明创建了两个元素,分别为“5”和“2”。其有用前面的来表示后面的话,应该写为:var e=new Array([‘5‘],[2],);
于是我写下了这样一个输出
var e=new Array([‘qwe‘],["12312"],[123]); var f=[["1","2"],["2","3"]]*alert(a[0]+"-----"+b[0]+"---"+c[0]+"-----"+d[0]+a[2]+"-----"+b[2]+"---"+c[2]+"-----"+d[2]+"---"+e[0]+"--"+f[0]);结合上面的来看的话,你猜结果会是什么?
这样原理就更清楚了吧。但是有一点我却还是有些疑惑:
var d=["asd","qwe",123]; var e=new Array(‘qwe‘,"12312",123);***假设我们输出alert(e[2]+"---"+typeof[e[2]]+“--”+d[2]+"---"+typeof(d[2]));结果为什么都是123,却一个是object。一个是number呢?还是有些小疑惑
而假设var t=e【2】,再输出typeof(t)。也是number了就,这是为什么呢?
3、删除
假设上面原理上多点。那么这里就多记些方法吧
.pop()这个昨天就应用了,删除数组的最后一个元素值。并返回该元素值。public object pop(){这里是删除最后一个的实现;return object}
shift()有了删除最后一个,就比較关注第一个。有头有尾嘛,这种方法就是用来删除第一个元素,并返回第该元素值的操作;
.splice(here,num,newItem,newItem2,...)这种方法存在參数。整体的意义是删除第几位到第几位被。并以以数组形式将删除的值返回,而參数第一位是在数组的第几位開始数,開始删除,这里是从0開始数的,第二个參数则是数几位,假设为0,则不进行删除。假设为1。则从開始数的那位開始仅仅查1个数值,依次论推,而假设后面再跟參数的话,那就应该到了加入的范畴里了,这里先一并解释下。就是进行完之前的操作之后。再在刚才的操作位插入后面的參数,即新的数值。
4、添加
前面居然介绍到了splice,这里就该说添加了,splice在一定程度上就是添加,假设第2个參数为0。同一时候还存在第3个或者很多其它的參数时,它就是添加,另外假设第2个參数不为0,同一时候还有很多其它參数的话,那就是改动了,所以改动就不再单独说了。
而之前用过的.push()则是在数组末尾加入
相对的.unshift()则是在数组的最前端进行加入。跟删除也就相应起来了吧
5、排序
不得不说,这曾是个慘痛的教训。在那个冒泡排序还不熟悉的时候。以前用过这种方法进行过排序,可是面试的时候,愣是两个一个都没有想起来,反序啊还是自己你憋了半天写的丑陋不堪的。多么痛的领悟啊当时是
.sort()多么痛的领悟啊
.reverse()反序,最前面的放最后面了,最后面的到最前面了。多么痛的领悟啊
6、数组的截取、合并和拷贝
.slice(start,[end]),这个的应用让我想起了subString(start,[end]),这里是生成的一个新的,一个新的,是new了一个哦
.concat()拼接,都是返回的新的哦。拼接之后的,new个的新的哦。新的哦
这里临时还记录这么多吧。也没查到太多实用的操作。这里附上个小知识:
typeof()的返回值有六个:number /string /boolean /object /function /undefined(还记得它和null的差别么)
天之道。损有余而补不足.....你想起了谁,大侠郭靖啊。仅仅要有颗向上的心,总能看到太阳升起的那刻....
js中对数组的操作-------Day49