zoukankan      html  css  js  c++  java
  • js中的数组和字符串的一些方法

    数组的一些方法:

    1.join()和split()方法 
    <script type="text/javascript">
    var x;
    var a=new Array();
    a[0]="XHTML";
    a[1]="CSS";
    a[2]="JavaScript";
    alert(a.join());
    alert(typeof(a.join));
    alert(typeof(a));
    </script>
    join() 方法用于把数组中的所有元素放入一个字符串。

    元素是通过指定的分隔符进行分隔的。 
    指定分隔符方法join("#");其中#可以是任意

    与之相反的是split()方法:用于把一个字符串分割成字符串数组. 
    stringObject.split(a,b)这是它的语法
    a是必须的决定个从a这分割
    b不是必须的,可选。该参数可指定返回的数组的最大长度 。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

    注意返回的数组中不包括a本身;


    提示和注释
    注释:如果把空字符串 ("") 用作 a,那么 stringObject 中的每个字符之间都会被分割。

    注释:String.split() 执行的操作与 Array.join 执行的操作是相反的。

    看例子
    <script type="text/javascript">
    var str="how are you?";
    document.write(str.split("")+"<br />");
    document.write(str.split(" ")+"<br />");
    document.write(str.split("",3)+"<br />");
    </script>
    返回
    h,o,w, ,a,r,e, ,y,o,u,?
    how,are,you?
    h,o,w

    一下两种可以把句子分割成单词
    var words = sentence.split(' ')或者使用正则表达式作为 a:

    var words = sentence.split(//s+/)

    2.
    reverse()方法

    reverse() 方法用于颠倒数组中元素的顺序。

    语法:

    arrayObject.reverse()

    注意: 该方法会改变原来的数组,而不会创建新的数组。


    <script type="text/javascript">
    var a=["xhtml","css","javascript"];

    var b=a.reverse();
    document.write(a);
    document.write(b);
    </script>

    var b=a.reverse();相当于

    a.reverse();

    var b=a;

    reverse()方法会改变原来的数组,所以上例的返回值a这个数组也改变!

    3.

    sort() 方法

    sort() 方法用于对数组的元素进行排序。

    语法:arrayObject.sort(sortby)

    注意: 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

    看这个例子说明这点

    <script type="text/javascript">
    var a=["dd","cc","ee","aa"];
    a.sort();
    var b=a;
    document.write(a+"<br />");
    document.write(b);
    </script>

    返回 aa,cc,dd,ee

         aa,cc,dd,ee

    其中sortby是可选的值

    *如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

    *如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

    • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    • 若 a 等于 b,则返回 0。
    • 若 a 大于 b,则返回一个大于 0 的值。

    例子:

    <script type="text/javascript">
    function myfunction(x,y){
      return x-y;
    }
     var a=new Array(3);
     a[0]="1111";
     a[1]="22";
     a[2]="333";
     alert(a);
     alert(a.sort());
     alert(a.sort(myfunction));
    </script>

    有参数的排序由参数的大小决定

    可以这么理解

    要判断的是数组里面任意两个成员的值,而返回值决定了这两个成员按什么规律排序

    这里因为原数组里都是数值型,所以这里的x,y就是数值型,x>y时返回正值,所以x将放在y后面,x=y时不变,x<y时返回负值此时x将位于y之前

    4.slice()方法

    可从已有的数组中返回选定的元素.

    语法
    arrayObject.slice(start,end)

    start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    返回值
    返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

    注意不包含end元素!!!!!!!!!!!

    该方法并不会修改数组,而是返回一个子数组。

    如果想删除数组中的一段元素,应该使用方法 Array.splice()。

    例子:

    start和end都是数组下标数字,且返回的数组里不包括end
    slice不会改变 原来的数组
    <script type="text/javascript">
     var a=[99,8,2,6,4,4,6];
     b=a.slice(1,4);
     document.write(b+"<br />");
     document.write(a);
    </script>
    返回
    8,2,6
    99,8,2,6,4,4,6

    5.看下splice()方法

    用于插入、删除或替换数组的元素。

    语法
    arrayObject.splice(index,howmany,element1,.....,elementX)

    参数描述:

    index 必需。规定从何处添加/删除元素。
    该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
    howmany 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。
    如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
    element1 可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
    elementX 可选。可向数组添加若干元素。

    返回值 
    如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

    例子: 
    <script type="text/javascript">
     var a=[11,22,33];
     b=a.splice(0,1,"x","y",[6,7,8]);
     document.write(b+"<br />");//返回被删除的元素的数组
     a=a.join("|");
     document.write(a);//splice()不能将它的参数展开,concat()可以``
    </script>

    返回:


    x|y|6,7,8|22|33

    说明
    splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。

    splice会直接对数组进行修改

    例子一:

    <script type="text/javascript">
     var a=[99,8,2,6,4,4,6];
     b=a.splice(1,4,"x","y");
     document.write(b+"<br />");
     document.write(a);
    </script>
    返回
    8,2,6,4
    99,x,y,4,6

    例子二:

    <script type="text/javascript">
    var a  = [1,2,3];
     a = a.splice(0,2);
     alert(a);  // 输出 1, 2   这里a=[1,2]
     a = a.splice(1,2);
     alert(a);  //  输出 2   这里a=[2]
     a = a.splice(1,2);
     alert(a);  //  没有删除任何数组 , 输出 空 数组
    </script>
    更好的说明了splice会直接对数组进行修改

    注意:和concat() 不同,splice并不将他插入的参数展开。也就是如果插入一个数组,他就是插入数组本身,还不是数组的元素。
    而concat()插入数组的话,就会把数组展开,插入数组中的元素,不过当插入的数组里
    还有数组的时候,就不会展开了。

    6.concat()方法

    concat() 方法用于连接两个或多个数组。

    注意:该方法不会改变现有的数组 ,而仅仅会返回被连接数组的一个副本。

    语法
    arrayObject.concat(arrayX,arrayX,......,arrayX)

    它返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

    例子:

    <script type="text/javascript">
     var a=[1,2,3];
     var b=a.concat(1);
     document.write(b+"<br />");//返回1,2,3,1
    </script>

    当参数是数组时,添加的是数组中的元素

    当参数里包含数组时,返回的数组不能拆开

    例子

    <script type="text/javascript">
     var a=[1,2,3];
     var b=[3,4,[5,6,7]];
     var c=a.concat(b);
     d=c.join("#")
     document.write(a+"<br />");//1,2,3
     document.write(b+"<br />");//3,4,5,6,7
     document.write(c+"<br />");//1,2,3,3,4,5,6,7
     document.write(d);//1#2#3#3#4#5,6,7
    </script>


    代码一: 
    <script type="text/javascript">
    var a=[1,2,3];
    var b=[a,b,c];
    var c=["x","y","z"];
    var js=a.concat(b,c);
    document.write(js+"<br />");
    document.write(js.join("|"))
    </script> 
    返回: 
    1|2|3|1,2,3|||x|y|z
    这里为什么会返回一些空值?? 
    我理解: 
    因为var b=[a,b,c]里面的a已经赋了值所以返回1,2,3  而b c还没有赋值所以返回一个空白··· 

    下面这个没有个变量a赋值,返回了undefined 
    代码二: 
    <script type="text/javascript"> 
    var a; 
    document.write(a); 
    </script> 

    但是如果是声明的a为一个数组的话就返回了空白·· 
    <script type="text/javascript"> 
    var a=new Array(); 
    document.write(a); 
    </script> 

    7.

    push() 方法 可向数组的末尾添加一个或多个元素,并返回新的长度 。 // 注意是返回一个长度
    语法
    arrayObject.push(newelement1,newelement2,....,newelementX)参数描述
    newelement1 必需。要添加到数组的第一个元素。
    newelement2 可选。要添加到数组的第二个元素。
    newelementX 可选。可添加多个元素。

    返回值
    把指定的值添加到数组后的新长度。

    说明
    push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。 push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。

    提示和注释
    注释:该方法会改变数组的长度。

    提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法。

    例子(unshift和push类似)
    <script type="text/javascript">
    var array1 = new Array("1","2","3","4");
        array1.push("5");
        document.write(array1+"<br />");
        document.write(array1);   //返回值一样说明该方法直接修改了数组
    </script>

    另一对:

    shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

    <script type="text/javascript"> 
    var array1 = new Array("1","2","3","4"); 
        array1.push("5"); 
        document.write(array1+"<br />"); //输出  1, 2 ,3 ,4,5 
        array2=array1.shift() 
        document.write(array2+"<br />"); //输出1
        document.write(array1);//输出   2 ,3 ,4 ,5
    </script> 
    pop()为删除最后一个元素,且返回最后一个元素
    <script type="text/javascript">
    var array1 = new Array("1","2","3","4");

     

        array1.push("5");
        document.write(array1+"<br />"); //输出  1, 2 ,3 ,4,5
        array1.pop()
        document.write(array1+"<br />");//输出  1, 2 ,3 ,4
        document.write(array1.pop());//输出4
    </script>

    转贴自:http://blog.csdn.net/chen__jinfei/article/details/6539804  ,谢谢

  • 相关阅读:
    【转】VS2010中 C++创建DLL图解
    [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode
    [转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法
    【转】 Tomcat v7.0 Server at localhost was unable to start within 45
    【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
    【转】SVN管理多个项目版本库
    【转】eclipse安装SVN插件的两种方法
    【转】MYSQL启用日志,和查看日志
    【转】Repository has not been enabled to accept revision propchanges
    【转】SVN库的迁移
  • 原文地址:https://www.cnblogs.com/goodbeypeterpan/p/4815438.html
Copyright © 2011-2022 走看看