发表于: 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;
};
评论