JS-day06-5.4

Array对象

  • 创建数组对象的两种方式
    • ==字面量方式==
    • ==new Array()==
// 1. 使用构造函数创建数组对象
    // 创建了一个空数组
    var arr = new Array();
    // 创建了一个数组,里面存放了3个字符串
    var arr = new Array('zs', 'ls', 'ww');
    // 创建了一个数组,里面存放了4个数字
    var arr = new Array(1, 2, 3, 4);
    
    
    // 2. 使用字面量创建数组对象
    var arr = [1, 2, 3];
    
    // 获取数组中元素的个数
    console.log(arr.length);
  • 检测一个对象是否是数组
    • ==instanceof==
    • ==Array.isArray()== HTML5中提供的方法,有兼容性问题
      函数的参数,如果要求是一个数组的话,可以用这种方式来进行判断
      案例解析



    
    Document
    


    


  • toString()/valueOf()
    • ==toString() 把数组转换成字符串,逗号分隔每一项==
    • ==valueOf() 返回数组对象本身==
      案例解析
//toString()和valueOf()  每一个对象都含有这两个方法,只不过不同对象输出的结果不同
        // var arr=[5,1,8,6];
        // console.log(arr);//(4) [5, 1, 8, 6]
        // //toString()把数组转换成字符串,并且使用逗号分隔每一项
        // console.log(arr.toString()); //5,1,8,6
        // //valueOf() 返回数组对象本身
        // console.log(arr.valueOf());//(4) [5, 1, 8, 6]
  • 数组常用方法

    演示:push()、shift()、unshift()、reverse()、sort()、splice()、indexOf()

// 1 栈操作(先进后出)
    push()
    pop()       //取出数组中的最后一项,修改length属性
    // 2 队列操作(先进先出)
    push()
    shift()     //取出数组中的第一个元素,修改length属性
    unshift()   //在数组最前面插入项,返回数组的长度
    // 3 排序方法
    reverse()   //翻转数组
    sort();     //即使是数组sort也是根据字符,从小到大排序
    // 带参数的sort是如何实现的?
    // 4 操作方法
    concat()    //把参数拼接到当前数组
    slice()     //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
    splice()    //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
    // 5 位置方法
    indexOf()、lastIndexOf()   //如果没找到返回-1
    // 6 迭代方法 不会修改原数组(可选)
    every()、filter()、forEach()、map()、some()
    // 7 方法将数组的所有元素连接到一个字符串中。
    join()

案例解析




    
    Document
    


    
 

  • 清空数组
// 方式1 推荐 
    arr = [];
    // 方式2 
    arr.length = 0;
    // 方式3
    arr.splice(0, arr.length);

案例

  • 将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现
function myJoin(array, seperator) {
      seperator = seperator || ',';
      array = array || [];
      if (array.length == 0){
        return '';
      }
      var str = array[0];
      for (var i = 1; i < array.length; i++) {
        str += seperator + array[i];
      }
      return str;
    }
    var array = [6, 3, 5, 6, 7, 8, 0];
    console.log(myJoin(array, '-'));
    
    console.log(array.join('-'))
  • 将一个字符串数组的元素的顺序进行反转。["a", "b", "c", "d"] -> [ "d","c","b","a"]。使用两种种方式实现。提示:第i个和第length-i-1个进行交换
function myReverse(arr) {
      if (!arr || arr.length == 0) {
        return [];
      }
      for (var i = 0; i < arr.length / 2; i++) {
        var tmp = arr[i];
        arr[i] = arr[this.length - i - 1];
        arr[arr.length - i - 1] = tmp;
      }
      return arr;
    }
    
    var array = ['a', 'b', 'c'];
    console.log(myReverse(array));
    
    console.log(array.reverse());
  • 工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除
// 方式1
    var array =  [1500,1200,2000,2100,1800];
    var tmpArray = [];
    for (var i = 0; i < array.length; i++) {
      if(array[i] < 2000) {
        tmpArray.push(array[i]);
      }
    }
    console.log(tmpArray);
    // 方式2
    var array =  [1500, 1200, 2000, 2100, 1800];
    array = array.filter(function (item, index) {
      if (item < 2000) {
        return true;
      }
      return false;
    });
    console.log(array);

  • ["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置
 var array =  ['c', 'a', 'z', 'a', 'x', 'a'];
    do {
      var index = array.indexOf('a',index + 1);
      if (index != -1){
        console.log(index);
      }
    } while (index > 0);
  • 编写一个方法去掉一个数组的重复元素
 var array =  ['c', 'a', 'z', 'a', 'x', 'a'];
    function clear() {
      var o = {};
      for (var i = 0; i < array.length; i++) {
        var item = array[i];
        if (o[item]) {
          o[item]++;
        }else{
          o[item] = 1;
        }
      }
      var tmpArray = [];
      for(var key in o) {
        if (o[key] == 1) {
          tmpArray.push(key);
        }else{
          if(tmpArray.indexOf(key) == -1){
            tmpArray.push(key);
          }
        }
      }
      returm tmpArray;
    }
    
    console.log(clear(array));

基本包装类型

为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用类型:String/Number/Boolean

// 下面代码的问题?
// s1是基本类型,基本类型是没有方法的
var s1 = 'zhangsan';
var s2 = s1.substring(5);

// 当调用s1.substring(5)的时候,先把s1包装成String类型的临时对象,再调用substring方法,最后销毁临时对象, 相当于:
var s1 = new String('zhangsan');
var s2 = s1.substring(5);
s1 = null;

// 创建基本包装类型的对象
var num = 18;               //数值,基本类型
var num = Number('18');     //类型转换
var num = new Number(18);   //基本包装类型,对象
// Number和Boolean基本包装类型基本不用,使用的话可能会引起歧义。例如:
var b1 = new Boolean(false);
var b2 = b1 && true;        // 结果是什么

String对象

  • 字符串的不可变
var str = 'abc';
    str = 'hello';
    // 当重新给str赋值的时候,常量'abc'不会被修改,依然在内存中
    // 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
    // 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
  • 创建字符串对象
var str = new String('Hello World');
    
    // 获取字符串中字符的个数
    console.log(str.length);
  • 字符串对象的常用方法
    字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
// 1 字符方法
    charAt()        //获取指定位置处字符
    charCodeAt()    //获取指定位置处字符的ASCII码
    str[0]          //HTML5,IE8+支持 和charAt()等效
    // 2 字符串操作方法
    concat()        //拼接字符串,等效于+,+更常用
    slice()         //从start位置开始,截取到end位置,end取不到
    substring()     //从start位置开始,截取到end位置,end取不到
    substr()        //从start位置开始,截取length个字符
    // 3 位置方法
    indexOf()       //返回指定内容在元字符串中的位置
    lastIndexOf()   //从后往前找,只找第一个匹配的
    // 4 去除空白   
    trim()          //只能去除字符串前后的空白
    // 5 大小写转换方法
    to(Locale)UpperCase()   //转换大写
    to(Locale)LowerCase()   //转换小写
    // 6 其它
    search()
    replace()
    split()
    fromCharCode()
    // String.fromCharCode(101, 102, 103);   //把ASCII码转换成字符串

案例

  • 截取字符串"我爱中华人民共和国",中的"中华"
var s = "我爱中华人民共和国";
    s = s.substr(2,2);
    console.log(s);
  • "abcoefoxyozzopp"查找字符串中所有o出现的位置
 var s = 'abcoefoxyozzopp';
    var array = [];
    do {
      var index = s.indexOf('o', index + 1);
      if (index != -1) {
        array.push(index);
      }
    } while (index > -1);
    console.log(array);
  • 把字符串中所有的o替换成!
 var s = 'abcoefoxyozzopp';
    do {
      s = s.replace('o', '');
    } while (s.indexOf('o') > -1);
    console.log(s);
    
    console.log(s.replace(/o/ig, ''));
  • 判断一个字符串中出现次数最多的字符,统计这个次数

你可能感兴趣的:(JS-day06-5.4)