1.什么是二维数组?
数组中的元素又引用了另一个子数组
保存横向行 竖向列 的二维数据结构
对一组数据,在进行细致分类
创建的同时初始化数据
var data=[
//0,1,2,3
[0,0,0,0],//0
[0,0,0,0],//1
[0,0,0,0],//2
[0,0,0,0]//3
];
//访问 arr[r][c] 先找楼层在找门牌号
先创建在赋值
var cites=[];
cites[0]=['武汉','宜昌','襄阳','天门'];
cites[1]=['长沙','岳阳','娄底'];
注意:二维数组,行下标r不能越界 ---- 报错!
console.log(cites[1][2]);//娄底
console.log(cites[1][3]);//undefind
//console.log(cites[2][0]);//报错
二维数组的遍历
for(var r=0;r<cites.length;r++){//外层循环 ---遍历每一行
for(var c =0;c<cites[r].length;c++){ //内层循环 ----遍历第r行中的每一列
console.log(cites[r][c]);
}
}
通过循环随机给data赋值
for(var r=0;r<data.length;r++){
for(var c=0;c<data[r].length;c++){
var rand =Math.floor(Math.random()*4);//一个0-3之间的随机整数
data[r][c]=rand;
}
}
debugger;//设置断点 必须要打开F12的开发模式才起作用
判断data中是否满格:
function isFull(){
for(var r=0;r<data.length;r++){
for(var c=0;c<data[r].length;c++){
//如果当前元素等于0,就返回false 表示可以继续游戏
if(data[r][c] === 0){
return false;
}
}
}
return true;//返回true 表示游戏结束
}
console.log(isFull());
创建数组,为其赋值,然后输出这些值。
常用
concat(value,value1,……) 连接两个或更多的数组,将数组中的子元素变成单个元素从末尾加入,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔,当join(“”)时,为无缝拼接。
slice(n,i) 从某个已有的数组返回选定的元素 。从下标为n开始截取元素,直到下标为i的元素结束(被截取下来的元素含有下标为n的元素,不含下标为i的元素,含头不含尾),i和n可为负数,表示从尾部截取。arr.splice()返回值为被截取部分。
splice(n,i,value,value1,……) 删除元素,并向数组添加新元素。n为开始删除元素的下标,i为被删除的个数,value为添加的元素,添加数量可以不等于删除数量 ,从哪里开始删除的就从哪里开始添加。
//在数组的末尾追加一个元素
puch()删除数组末尾的元素 返回被删除的元素
arr.push(value) ==> arr[arr.length]=value
var arr=[1,2,3,4];
arr.push(8);
console.log(String(arr));
pop() 删除并返回数组的最后一个元素
arr.pop() ==> arr.length = arr.length - 1;
var del = arr.pop();
console.log(String(arr)); //1,2,3
console.log(del); //4
shift() 删除并返回数组的第一个元素
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
先进后出的一个管理方式
类似栈:一端封闭,只能从另一端进出的数组
特点:每次出入栈,都不影响其他元素的位置
从开头出入栈:
特点:每次出入栈,其他元素位置都会一次顺移
var bus=[];
for(var i=1;i<=5;i++){
// bus.push("乘客"+i);
bus.unshift("乘客"+i);
console.log(String(bus));
}
while(bus.length>0){
// var last=bus.pop();
var first=bus.shift()
console.log(first+"下车");
console.log(String(bus));
}
笔试题:实现十进制数转化为二进制
function getBin(des){
//定义以存储二进制每个数的数组
var bin=[];
//反复:那des取2的余数,止到des等于0 只要des>0反复取余
while(des>0){
// 将des取2的余数放入数组
// bin.unshift(des%2);//在数组的开头存入元素
bin.push(des%2);
// 将des/2,取整后,在保存到des中
des=parseInt(des/2);
}//循环结束
//翻转bin
bin.reverse();
// 将数组做无缝连接,并返回
return bin.join("");