发表于: 2017-04-21 00:19:11

1 1287


今天完成的事情:完成任务2了,

    重认识了数组:

        数组可以通过 indexOf()方法,返回数组的指定元素的位置:

       var arr = [1, 2 , 3]; arr.indexOf(2)//1;

      给数组的length赋一个长度,会改变数组,超过的长度都是由undefined填充:

      var arr = ["a", "b", "c"];

       arr.length = 5;

      arr = ["a" , "b", "c", undefined, undefined];

    通过数组索引赋值,会改变原数组:

    var arr = ["a", "b", "c"];

    arr[i] = 2;

    arr = ["a", 2, "c"];


    数组的方法:

         添加: Array.push(element);  在数组的尾部添加一个或者多个元素;

                    Array.unshift(element);在数组的头部添加一个或者多个元素;

          删除:

                  Array.pop();删除数组尾部的元素,如果要删除多个,需要多次使用 如:arr.pop();arr.pop();arr.pop();表示删除了三次

                  Array.shift();删除数组头部的元素,多次删除和pop()使用发现一样,

              空数组,使用删除不会爆炸,返回的是undefined;

        排序:

               Array.sort(); 按照默认的方法给数组排序,也可以自定义排序,

                         arr.sort(funciton(a, b) {

                               return a - b从小到大//b - a 从大到小;

                          });

              Array.reverse(); 反转当前数组的元素的顺序;

       连接:

              Array.concat(Array): 把一个数组和另一个数组连接起来,返回一个新数组

              Array.join();把数组用指定的符号连接起来,返回一个字符串;

     指定位置的删除和添加元素的方法:

             Array.slice(start, end); 截取索引star到索引end之间的数组元素,返回一个新数组, 不包括索引start和索引end的元素; 原数组会发生改变

              var arr = [1, 2, 3, 4, 5, 6];

               arr.slice(2, 5) //[4, 5];

             如果只有索引start位置,返回start之后的所有元素,返回新数组;

              arr.slice(2)//[3, 4, 5, 6];

             如果没有参数,复制一个原数组,返回新数组,与数组不相等;

             var newArr = arr.slice();//[1, 2, 3, 4, 5, 6];

              newArr === arr //false;

      

            Array.splice(star,del+element)// 值指定索引位置添加或者删除若干个元素,返回一个新数组; 原数组发生改变;

             var arr = ["a", "b", "c", "d", "e", "f", "d"];

             //指定位置删除,添加

             arr.splice(2, 3, "A", "B"); //["c", "d", "e"];

             arr = ["a", "b", "A", "B" ,"f" ,"d"];

            //只删除不添加

            arr.splice(2, 2)//[,"A", "B"]

           arr = ["a", "b" ,"f" ,"d"]

         //只添加,不删除

          arr.splice(3, 0 , "cc","dd");//[]

         arr = "a", "b" ,"f" ,"cc" ,"dd", "d";

      注意: 第一个参数是开始删除添加的位置(包含自身),第二个参数是删除添加的个数,第三...个是要添加的元素

明天计划的事情:

              学习任务3需要的知识要点;
遇到的问题:

               输入的玩家人数,随机分配杀手和农民地方,思路不清晰,

     我的思路是通过条件判断玩家个数,获得杀手和农民的个数, 然后,for循环杀手和农民的个数循环添加li元素,接着获取所以添加的li元素,

   同随机数组的方法 从新排序。但是在获取数组随机排序的时候,始终不能成功; 

   

 

  看了别人的代码后,发现思路方向完全走错了,获取数组杀手和农民的数组,然后合并他们,在利用随机数组,随机输出,


if(num >= 6 && num < 9) 和 if(6 <= num < 9) 这两种写法有什么区别?

第二种的判断会失效?

           
收获: 

      重新认识认识了slice() 和splice(); 比以前理解的要深入了,

     学习了2中随机的数组的方法:

    第一种:

             function randomSort(arr) {

                    var arrAfter =  arr.sort(function() {

                            return Math.random() > 0.5 ? -1 : 1;   // 看别人把0.5写.5也有效果,不知道什么原理? 

                  });

                    return arrAfter

             };

 第二种:

          function randomSort(arr) {

                var res = [];

               for (var i = 0, len = arr.length; i < len; i++) {

                      var j = Math.floor(Math.random() * arr.length);

                      res[i] = arr[j];

                      arr.splice(j, 1);

                 }

                return res;

           };


返回列表 返回列表
评论

    分享到