zoukankan      html  css  js  c++  java
  • 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的差别么)


    天之道。损有余而补不足.....你想起了谁,大侠郭靖啊。仅仅要有颗向上的心,总能看到太阳升起的那刻....



  • 相关阅读:
    hihocoder-1014 Trie树
    51Nod-1265 四点共面
    cf466B Wonder Room
    2014.9.13模拟赛【数位和乘积】
    2014.9.13模拟赛【环上的游戏】
    bzoj2719[Violet 4]银河之星
    wikioi1450 xth的旅行
    poj2352 stars
    2014.9.6模拟赛【藏妹子之处】
    2014.9.6模拟赛【工资】
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6962096.html
Copyright © 2011-2022 走看看