js基础知识(三)

这篇主要写关于array(没有讲ES5中的一些新方法)

数组介绍

数组是值的有序集合。在js中数组的值可以是任何类型。每个值对应的位置成为索引;js数组是js对象的特殊形式,所以有一种说法是,在js中一切皆对象,js中允许的索引为32位

数组的基本操作
  • 数组的创建
    数组创建的最简单方法是数组直接量;
    1
    2
    var arr = [];
    var arr1 = [1,'2',{},[1,2],false];
    数组的另外一种方法就比较麻烦
    1
    2
    3
    var arr = new Array(); //相当于 var arr = [];
    var arr = new Array(10); //相当于创建了一个长度为10的空数组
    var arr = new Array(1,'2',{},[1,2],false); //这个就相当于 var arr1 = [1,'2',{},[1,2],false];
    所以我们通常使用数组直接量的方法进行创建,因为简单太多了
  • 数组的基础操作
    • 查找
      通过[]中添加索引进行查找
      1
      2
      3
      var arr = [1,2,3];
      arr[0] // 1
      arr[1] // 2
    • 添加
      添加和改写array中的元素是一样的
      1
      2
      3
      var arr = [1,2,3];
      arr[3] = 4; //arr为[1,2,3,4];
      arr[0] = 0; //arr为[0,2,3,4];
    • 数组的长度
      数组的长度就数组中元素的个数 通过 ‘ .’的形式使用,并且可以通过改变数组的长度进行删除和添加数组
      1
      2
      3
      var arr = [0,1,2,3];
      arr.length = 3; // arr 为 [0,1,2]
      arr.length = 4; // arr 为 [0, 1, 2, empty] empty是空值的意思
  • 数组方法
    • join()
      该方法可以将数组拼接成字符串,返回值为拼成的字符串,有一个参数,使用该参数进行拼接,如果没有的话,默认为以’,’进行拼接,如果数组中的元素也是数组也会被打开进行拼接,如果是对象的话,会使用Object.prototype.toString(item); 这样的话就会拼成’[object Object]’,如下
      1
      2
      3
      4
      5
      6
      var arr = [1,2,3];
      arr.join(); // '1,2,3'
      arr = [[[1,2],[3,4]],[5,6]];
      arr.join(); // '1,2,3,4,5,6'
      arr = [[1,2,3],{name:'pde',age:18}];
      arr.join() // '1,2,3,[object Object]'
    • reverse()
      逆转,改变了原数组,返回值为原数组
    • sort()
      排序,如果没有参数,则进行最简单的排序,按照数字大小和字母表进行排序,注意字符串的比较与数字不同,字符串是由第一位开始比较,如果数组中的元素不是原始值,进行隐式类型转化比较,其中为undefined的元素,会被放到数组的尾部;sort最强大点,在于它的参数,它的参数是一个函数 通过返回值进行排序;返回值为原数组
      1
      2
      3
      4
      var a = [33,4,1111,222];
      a.sort(function(a,b){
      return a - b; // 返回值为正数,a,b互换位置,ab分别是前一个元素和后一个元素的值,负数不变
      });
    • concat()
      返回值为一个新数组,新数组的元素包括调用concat的数组和其中的参数,如果其中的参数为数组,连接的是该数组中的元素,并不是数组本身,但并不会扁平化数组的数组
    • slice()
      返回数组的一段,第一个参数为起始位置,第二个参数为终止位置,若没有第二个的话,则一直到结尾,如果参数为负数的话,相当于再加上length的数为参数
      1
      2
      var a = [1,2,3,4,5];
      a.slice(0,3); // 返回[1,2,3]
    • splice()
      这个方法比较6,一共可以填多个参数;第一个为删除的起始位置,第二个为删除的个数,后面的为插入其中的元素;返回值为剪切下来的元素组成的数组,会改变原数组
    • push()和pop(); unshift()和shift()
      push()为向数组的后面添加元素,返回数组长度;pop()为在数组后面删除一个元素,返回删除的值;unshift()为在数组前面添加元素,返回数组长度;shift()为在数组前面删除一个元素,并返回删除的值
    • toString()
      这里的toString()与没有参数的join()结果一样