创建数组
利用数组字面量
    var arr = [1, 2, 3];
    console.log(arr[0]); 
利用new Array()
    //var arr1 = new Array(); //创建了一个空数组
    //var arr1 = new Array(2); //这个2表示数组长度为2,里面有2个空的数组元素
    var arr1 = new Array(2, 3); //等价于[2,3] 表示里面有2个数组元素是2和3
    console.log(arr1); 
检测是否为数组
instanceof 运算符,它用来检测是否为数组
    var arr = [];
    var obj = {};
    console.log(arr instanceof Array);
    console.log(obj instanceof Array); 
Array.isArray(参数) 用于确定传递的值是否是一个 Array。
Array.isArray(参数) H5新增的方法,IE9以上支持。
    var arr = [];
    var obj = {};
    console.log(Array.isArray(arr));
    console.log(Array.isArray(obj)); 
注意:当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测 iframes.
添加数组元素
push() 在我们数组的末尾添加一个或者多个数组元素
    var arr = [1, 2, 3];
    arr.push(4, 'zeyi');
    console.log(arr); //(5) [1, 2, 3, 4, 'zeyi'] 
push可以给数组追加新的元素。push()参数直接写数组元素就可以。push完毕之后,返回的结果是新数组的长度。- 原数组也会发生变化。
 
unshift 在我们数组的开头添加一个或者多个数组元素
    arr.unshift('Yue')
    console.log(arr);//(6) ['Yue', 1, 2, 3, 4, 'zeyi'] 
unshift可以给数组追加新的元素。unshift()参数直接写数组元素就可以。unshift完毕之后,返回的结果是新数组的长度。- 原数组也会发生变化。
 
删除数组元素
pop()可以删除数组的最后一个元素。
    console.log(arr); //(6) ['Yue', 1, 2, 3, 4, 'zeyi']
    arr.pop();
    console.log(arr); //['Yue', 1, 2, 3, 4]
    console.log(arr.pop()); //4 
pop可以删除数组的最后一个元素,一次只能删除一个元素pop()没有参数pop完毕之后,返回的结果是删除的那个元素- 原数组也会发生变化
 
shift可以删除数组的第一个元素。
    console.log(arr); //['Yue', 1, 2, 3, 4]
    console.log(arr.shift()); //Yue
    console.log(arr); //(3) [1, 2, 3] 
shift可以删除数组的最后一个元素,一次只能删除一个元素shift()没有参数shift完毕之后,返回的结果是删除的那个元素- 原数组也会发生变化
 
筛选数组
例:有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面。
    var arr = [1500, 1200, 2000, 2100, 1800];
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < 2000) {
            //newArr[newArr.length] = arr[i];
            newArr.push(arr[i]);
        }
    }
    console.log(newArr); 
数组排序
翻转数组
    var arr = ['Yue', 'Zeyi'];
    arr.reverse();
    console.log(arr); //(2) ['Zeyi', 'Yue'] 
数组排序(冒泡排序)
    var arr = [2, 5, 4, 7, 1];
    arr.sort();
    console.log(arr); //(5) [1, 2, 4, 5, 7] 
这种排列只针对单位数,如果双位数会依照1,11,2,22这种顺序排列。
升序排列
    var arr = [2, 5, 14, 7, 1];
    arr.sort(function(a, b) {
        return a - b; //升序顺序排列
    });
    console.log(arr); //(5) [1, 2, 5, 7, 14] 
降序排列
    var arr1 = [2, 5, 14, 7, 1];
    arr1.sort(function(a, b) {
        return b - a; //降序顺序排列
    });
    console.log(arr1); 
数组索引方法
indexOf(数组元素) 返回该数组元素的索引号,从前面开始查找。、
    var arr = ['red', 'blue', 'green', 'blue'];
    console.log(arr.indexOf('blue')); //1
    console.log(arr.indexOf('zeyi')); //-1
    console.log(arr.lastIndexOf('blue')); //3 
lastIndexOf(数组元素) 返回该数组的索引号,从后面开始查找。
    var arr = ['red', 'blue', 'green', 'blue'];
    console.log(arr.lastIndexOf('blue')); //3 
注意:
- 只返回第一个满足条件的索引号
 - 如果在该数组里面找不到元素,则返回 -1
 
数组去重
问题:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重。
解决:遍历数组,然后拿着旧数组元素去查询新数组,如果该数组里面没有出现过,就添加,否则不添加。
    //封装一个函数
    function unique(arr) {
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) === -1) { //利用新数组.indexOf(数组元素)如果返回-1说明新数组里面没有该元素
                newArr.push(arr[i]); //然后添加到新数组
            }
        }
        return newArr;
    }
    var demo = unique(['a', 'c', 'd', 'b', 'c'])
    console.log(demo); //(4) ['a', 'c', 'd', 'b' 
数组转换为字符串
toString() 将我们的数组转换为字符串
    var arr = ['1', '2', '4', '3'];
    console.log(arr.toString()); //1,2,4,3 
join(分隔符)
    var arr = ['red', 'blue', 'green', 'blue'];
    console.log(arr.join()); //red,blue,green,blue
    console.log(arr.join('-')); //red-blue-green-blue
    console.log(arr.join('&')); //red&blue&green&blue 
其他方法
| 方法名 | 说明 | 返回值 | 
|---|---|---|
| concat() | 连接俩个或者多个数组,不影响原数组 | 返回一个新的数组 | 
| slice() | 数组截取slice(begin,end) | 返回被截取项目的新数组 | 
| spliece() | 数组删除splice(第几个开始,要删除的个数) | 返回被删除项目的数组,会影响原数组 | 
slice()和spliece()目的基本相同,重点看splice()










