+发表新主题
查看: 1511|回复: 0

[代码片段] js 数组API

[复制链接]

[代码片段] js 数组API

[复制链接]
水中花 发表于 2015-12-17 22:07:16 浏览:  1511 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
[size=10.5000pt]一. 数组API

     API:应用程序编程接口

     什么是对象:封装数据,并提供对数据的操作方法的整体

     什么是数组对象:封装了一组相关的数据,提供了对数据的操作方法


     1. arr to String: 2

        1. var str=arr.toString(); ----------默认只能以逗号分隔每个元素

      2. var str=arr.join("连接符");--------------自定义元素间的连接符,元数组对象不变,   

                                           返回新数组                                                           

              固定套路:

           1. 将字符数组,无缝拼接为单词:

              比如: var chars=["H","e","l","l","o"];

               215920o7759wv31ye33cey.png

           2. 将单词数组,拼接为句子:

             比如: var chars=["hello","world","!"];

                      215920o7759wv31ye33cey.png

           3. 将数组转化为页面上的列表/选择元素:

              /* <select>

                <option>北京</option>

                <option>上海</option>

                <option>天津</option>

                 <option>武汉</option>

             </select>      */     


        比如:   var cities=["北京","上海","天津","武汉"];

                                  cities=cities.join("</option><option>");

                                         cities="<select><option>"+cities+"</option></select>";

                                          document.write(cities);

          其输出如下:

                      215920o7759wv31ye33cey.png

           

            


         优化:频繁字符串拼接,推荐使用数组的join方法作为替代

          使用join拼接步骤:

                      1. 先将要拼接的子字符串,放入一个数组中,临时保存

            2. 遍历结束后,一次性join成一个完整字符串


练习:打印国际象棋,使用join拼接

  1.        /*打印国际象棋棋盘:

  2. 行号r从0开始,到7结束

  3. 列号c从0开始,到7结束;

  4.         r+c%2=0时,打印白棋,否则打印黑棋

  5.      */

  6. <script>

  7. for(var r=1;r<=8;r++){

  8. for(var c=1,str=[];c<=8;c++){

  9. if((r+c)%2==0){

  10. str[str.length]="□";

  11. }else{

  12. str[str.length]="■";

  13. }

  14. }

  15. str=str.join("");

  16. console.log(str);

  17. }

  18.   </script>
复制代码
其输出如下:

         215920o7759wv31ye33cey.png    

     2. 连接数组和获取子数组:不修改原数组对象,返回新数组对象

       concat: var newArr=arr.concat(1,2,[3,4].....)

          例如:

                 var arr=[1,2,3];

                                         var arr2=[11,22];

                                         var arr3=arr.concat(12,23,123,arr2);

                                          console.log(arr3);

                      215920o7759wv31ye33cey.png

       slice: var subArr=arr.slice(starti,endi+1);

                 starti: 开始的位置下标

                 endi: 获取到的位置下表

                 ***含头不含尾***

                 slice支持倒数下标,-1开始,下面例子中可以改为var birth=pid.slice(6,-4);同样含头部含尾。

        例如: //slice截取省份证号上生日

                                     var pid=["4","2","2","0","2","3","1","9","9","0","9","2","9","9","1","2","1","1","1","7"];

                                      var birth=pid.slice(6,14);

                                      birth=birth.join("");

                                     console.log(birth);

                215920o7759wv31ye33cey.png

        省略endi,从starti一直取到结尾

       比如取手机号后4:

         //截取手机号后4

             var num=["1","5","3","2","6","5","1","4","9","7","8"];

            num=num.slice(-4);

            num=num.join("");

            console.log(num);

             215920o7759wv31ye33cey.png

    3. splice:删除,插入,替换任意位置的任意个元素

             直接修改原数组

                删除:splice(starti,n);

          //删除数组元素

                  var arr=[1,3,5,6,7,9,8];

                arr.splice(1,3);

                   console.log(arr);

               215920o7759wv31ye33cey.png

        插入:splice(starti,0,新值1,新值2,...)

                   //插入元素

              var arr=[1,3,5,6,7,9,8];

                arr.splice(1,0,5,6,8,7);

                     console.log(arr);

                                        215920o7759wv31ye33cey.png


        替换:splice(starti,n,新值1,新值2,...)

           //替换元素

            var arr=[1,3,5,6,7,9,8];

                arr.splice(1,4,5,6,8,7);

                       console.log(arr);

                                                      215920o7759wv31ye33cey.png

    4. reverse(): 颠倒数组中所有元素的位置

        ***直接修改原数组

      //元素前后转换

           var arr=[1,3,5,6,7,9,8];

                                Arr.reverse();

              console.log(arr);

          215920o7759wv31ye33cey.png

练习:冒泡排序,按升序排列

  1. <script>

  2. function maopaoSort(arr){

  3.                  //比较r轮,r小于数组长度

  4.          for(var i=1;i<arr.length;i++){

  5.                  //每轮比较数组长度-r次

  6.     for(var n=1;n<=arr.length-i;n++){

  7.                    //如果arr[n]>arr[n+1],则前后交换

  8.     if(arr[n]>arr[n+1]){

  9.        arr[n+1]+=arr[n];

  10.    arr[n]=arr[n+1]-arr[n];

  11.                                arr[n+1]-=arr[n];

  12. }

  13. }

  14. }

  15.             }

  16. var arr=[3,7,4,5,8,9,6];

  17. maopaoSort(arr);//将数组地址复制给参数变量arr

  18. console.log(arr);

  19. </script>
复制代码

其输出结果如下:

215920o7759wv31ye33cey.png
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网