2017-07-30 | js原型 | UNLOCK

数组字符串操作方法

数组

1. 增加删除方法

  • push将元素添加进数组最后一项

    • eg:arr.push(“111”)—-意为:将数组’111’增加到数组最后一项
  • pop将数组中最后一项删除,返回删除后数组的最后一项

    • eg:var arr=[134,345,344]; arr.pop()
  • unshift:往数组中第一项之前添加元素,返回添加之后的数组长度

    • eg:var arr=[134,345,344]; arr.unshift(778)===4;
  • shift将数组第一项从数组中删除

    • eg:var arr=[134,345,344]; arr.shift()
  • splice:往数组中某个位置删除或者插入

    • arr.splice(index,number,element1,elementX) —-index:要修改的位置下标 ; ——number:要删除的元素数量,如果没有写该参数,则表示将数组中所有元素删除 ; ——element1:表示添加到数组中的元素
    • splice参数中,
      • 1、如果number跟添加到数组中的元素数量(elements)不对应,那么就表示是要用该元素将那两位元素替换;
      • 2、如果第三个参数没写,表明是要将数组中的一项或者多项元素从数组中删除(返回值为以数组形式的删除元素),
      • 3、如果number为0,则表示不从数组中删除元素

eg:

1
var arr = [12,23,244,56,45]; arr.splice(2,1) //从arr数组中删除元素'244'

2. 求数组的长度

  • length:可以获得数组或者伪数组的元素个数

eg:

1
var arr=[1,3,4,5]; console.log(arr.length)  //4

3. 数组转换成字符串

  • 第一种:

    • toString()     它以列表的形式输出这些字符串
    • 这种方法是会将调用方法的数组对象全部转化成字符串
    1
    var arr =[13,23,557,67]; console.log(arr.toString());//  13,23,557,67(字符串),当调用该方法的对象不是Array,就会出现错误
  • 第二种

    • join()

      1. 这个方法如果不传参数就代表按默认方式切割转化
      1
      var arr = [12,34,45,35,23]; console.log(arr.join());  // 12,34,45,35,23(字符串类型),默认以逗号切割
      1. 如果传入参数,就代表以传入的符号切割
      1
      2
      var arr = [12,56,34,34,234];console.log(arr.join("") //这个就是告诉浏览器用空字符串切割; //12563434234;
      var arr = [23,78,78,78,89]; console.log(arr.join("-")) //这个就是告诉浏览器以‘-’切割数组 ; // 23-78-78-78-89

4. 字符串转换成数组的方法

  • 第一种:

    • split() 可以将字符串按照指定字符串切割,返回数组
    • 优点:用法方便
    • 缺点:需要转化的字符串有可切割的字符
    1
    var str = "233,34,45,34,34"; console.log(str.split(","); //   [233,34,45,34,34] //如果split方法内不传参数,那么默认从头到尾当做一个整体切割,返回的还是一个数组
  • 第二种:
    暂不知道,之后知道再做补充

5. 对象与数组与JSON格式互相转换

JSON全称为 JavaScript Object Native 是一种轻量级的字符串类型的特殊格式的文本存储格式。

  • 数组转化成JSON格式(Array ==> JSON)

    • JSON.stringify(arr);

      1
      2
      3
      4
      5
      6
      7
           var arr= [1,2,3, { a : 1 }]; console.log(JSON.stringify(arr));// '[1,2,3,{"a":1}]'
      ```
      - JSON格式转换成数组(JSON ==> Array)
      - JSON.parse(arr);

      ```javascript
      var jsonStr = '[{"name":"a"},{"name":"b"}]';console.log(JSON.parse(jsonStr)); //[0:{name: "a"},1:{name: "b"}]

字符串常用方法

1. 字符串长度

  • str.length

2. 选取字符串中指定位置的字符

  • str.substring(from,to)

  • subString 有两个参数。from表示,你要从哪里往后选取,为字符串的下标; to表示,你要截取到哪个下标位置,如果第二个参数没传,那么默认选取到该字符最后

    1
    2
    3
    var str = "墨上颜如玉,公子世无双";console.log(str.substring(6));//'公子世无双';

    var str = "The quick brown fox jumped over the lazy yellow dog";console.log(str.substring(2,6)); // 'e qu' ;//substring(2,6)表明从第2个字符开始往后截取,截取到第6个字符;

3.判断类型

  • valueOf  返回指定对象的原始值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
        var k = {};console.log(k.valueOf());  // Object {}

    var m = [12,4,56,35]; console.log(m.valueOf()); [12,4,56,35]

    var x = function(){console.log('lalala')};x.valueOf();
    // 返回 function (){console.log('lalala')}
    ```


    - **toString**  返回表示可以表示指定对象的字符串

    ```javascript
    var k={} ;console.log(k.toString()); [object object];

    var x = [1,2,3];console.log(x.toString()); // "1,2,3";
    ```

    - 上面两种判断数据类型判断简单数据类型还行,但是判断复杂数据类型就不行了

    - **instanceof** --- A instanceof B 意为:A的原型链上是否存在B构造函数的prototype表示的对象

    ```javascript
    var a = "iamstring.";
    var b = 222;
    var c= [1,2,3];
    var d = new Date();
    var e = function(){alert(111);};
    var f = function(){this.name="22";};
    console.log(c instanceof Array) //---------------> true
    console.log(d instanceof Date)
    console.log(f instanceof Function) //------------> true
    console.log(f instanceof function) //------------> false
  • constructor 每一个对象都有一个构造器指向它的构造函数,这种判断数据类型的方式是比较稳妥的,但是当继承的时候,容易出错。

    1
    2
    3
    4
    5
    6
    var c= [1,2,3];
    var d = new Date();
    var e = function(){alert(111);};
    console.log(c.constructor === Array) //----------> true
    console.log(d.constructor === Date) //-----------> true
    console.log(e.constructor === Function) //-------> true

评论加载中