javaScript之数组(二)

  1. ***数组API:

    *栈和队伍:其实都是数组,只不过使用了不同的方法

        栈:一端封闭,只能从另一端进出的*数组*

        何时使用栈:只能从数组一端进出

结尾出入栈:

                入栈:arr.push(新值); ==>arr.[arr.length]=新值;

                出栈:var last=arr.pop();

案例:

var bus=[];
for(var i=0;i<5;i++){
    bus.push("乘客"+i);
    alert(bus);
}
while(bus.length>0){
    var cust=bus.pop();
    alert(cust+"下车\n"+bus);
}


开头出入栈:

            入栈:arr.unshift(新值);

            出栈:var first=arr.shift();

var bus=[];
for(var i=0;i<5;i++){
    bus.unshift("乘客"+i);
    alert(bus);
}
while(bus.length>0){
    var cust=bus.shift();
    alert(cust+"下车\n"+bus);
}


现实中的排队效果:push  shift 组合

    队列:只能从一端进入,必须从另一端出

    何时使用:只要先到的先得

        结尾入队列:arr.push(新值)

        开头出队列:var first=arr.shift();


案例:排队买手机

var shen=5;
var queue=[];
    for(var i=0;i<6;i++){
        queue.push("顾客"+i);
        alert(queue);
    }
    while(shen>0){
        var cust=queue.shift();
        shen--;
        alert(cust+"抢购成功\n"+queue+"\n剩余:"+shen);
    }
alert(queue+"抢购失败");


2.二维数组:数组的元素又引用了另一个子数组

        何时使用:保存横行数列的二维数据;保存上下级关系的数据

        如何创建:2步

            1.创建一个空数组:var data=[];

            2.设置数组中每个元素再引用另一个小数组:date[0]=[0,0,0,0]

        访问二维数组中任意位置的元素:data[r][c]

随机生成一个数,插入2:

  var data=[
    [0,0,0,0],
    [0,0,0,0],
    [0,0,0,0],
    [0,0,0,0],
];
  var r=Math.floor(Math.random()*4);
  var c=Math.floor(Math.random()*4);

  data[r][c]=2;
  var html=data.join("<br>");
  document.write(html);

      二维数组行下标r不能越界,越界就报错

      遍历二维数组:固定套路:外层循环遍历当前行中的列

需要手写的固定套路

for(var r=0;r<data.length;r++){
    for(var c=0;c<data[r].length;c++){
        当前元素:data[r][c]
    }
}

3.***字符串对象:多个字符串组成的只读*数组*

    和数组相同的API:

            访问字符串中任意一个字符:str[i]

            字符串的长度:str.length

    凡是不直接修改原数组的API,字符串都能用:

        比如 var substr=str.slice(starti,endi+1);

                var newstr=str.concat(otherstr);

        不能用: reverse()  push()  str[i]="字符"


    内置对象:11

            ES标准已经规定好,由浏览器厂商已经实现的对象

            开发人员直接使用,不必关心具体实现。

                 String Number Boolen --包装类型

                 Array  Date RegExp  Math

                 Error

                 Function  Object

                 Global-->window


4.查找关键字:

            vari=str.indexOf("kword"[,starti]);//找右下侧一个,默认从头开始

            str.lastIndexOf("kword"[,starti]);//找左下侧一个,默认结尾开始

                lastIndexOf只要关键字第一字符<=当前位置

例1:

/*顺位查找关键字的位置*/
    var str="no zuo no die no can no bi bi";
    var i=str.indexOf("no");
    console.log("在位置"+i+"发现关键字");

例2:

/*倒序查找关键字的位置*/
  var str="no zuo no die no can no bi bi";
  var i=-1;
  while((i=str.indexOf("no",i+1))>=0){
      alert("在位置"+i+"发现关键字");
  }

例3:

从后面开始查找关键字:

/*查找关键字的位置*/
  var str="no zuo no die no can no bi bi";
  var i=str.length;
  while((i=str.lastIndexOf("no",i-1))>=0){
      alert("在位置"+i+"发现关键字");
      if(i==0){//防止0位置刚好出现关键字时,出现死循环
          break;
      }
  }


截取字符串的方法  3种:

                        varsub=str.slice(starti,endi+1);//获取两数之间的字符串,

                        str.substring(starti,endi+1);//不支持负数,提取字符串中介于两个指定下标之间的字符

                        str.substr(starti,n);//用于返回一个从指定位置开始的指定长度的子字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值