JavaScript——数组对象

2022-10-26 17:14:42 浏览数 (2)

创建数组

利用数组字面量

代码语言:javascript复制
    var arr = [1, 2, 3];
    console.log(arr[0]);

利用new Array()

代码语言:javascript复制
    //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 运算符,它用来检测是否为数组

代码语言:javascript复制
    var arr = [];
    var obj = {};
    console.log(arr instanceof Array);
    console.log(obj instanceof Array);

Array.isArray(参数) 用于确定传递的值是否是一个 Array

Array.isArray(参数) H5新增的方法,IE9以上支持。

代码语言:javascript复制
    var arr = [];
    var obj = {};
    console.log(Array.isArray(arr));
    console.log(Array.isArray(obj));

注意:当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测 iframes.

添加数组元素

push() 在我们数组的末尾添加一个或者多个数组元素

代码语言:javascript复制
    var arr = [1, 2, 3];
    arr.push(4, 'zeyi');
    console.log(arr); //(5) [1, 2, 3, 4, 'zeyi']
  • push可以给数组追加新的元素。
  • push()参数直接写数组元素就可以。
  • push完毕之后,返回的结果是新数组的长度。
  • 原数组也会发生变化。

unshift 在我们数组的开头添加一个或者多个数组元素

代码语言:javascript复制
    arr.unshift('Yue')
    console.log(arr);//(6) ['Yue', 1, 2, 3, 4, 'zeyi']
  • unshift可以给数组追加新的元素。
  • unshift()参数直接写数组元素就可以。
  • unshift完毕之后,返回的结果是新数组的长度。
  • 原数组也会发生变化。

删除数组元素

pop()可以删除数组的最后一个元素。

代码语言:javascript复制
    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可以删除数组的第一个元素。

代码语言:javascript复制
    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的删除,剩余的放到新数组里面。

代码语言:javascript复制
    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);

数组排序

翻转数组

代码语言:javascript复制
    var arr = ['Yue', 'Zeyi'];
    arr.reverse();
    console.log(arr); //(2) ['Zeyi', 'Yue']

数组排序(冒泡排序)

代码语言:javascript复制
    var arr = [2, 5, 4, 7, 1];
    arr.sort();
    console.log(arr); //(5) [1, 2, 4, 5, 7]

这种排列只针对单位数,如果双位数会依照1,11,2,22这种顺序排列。

升序排列

代码语言:javascript复制
    var arr = [2, 5, 14, 7, 1];
    arr.sort(function(a, b) {
        return a - b; //升序顺序排列
    });
    console.log(arr); //(5) [1, 2, 5, 7, 14]

降序排列

代码语言:javascript复制
    var arr1 = [2, 5, 14, 7, 1];
    arr1.sort(function(a, b) {
        return b - a; //降序顺序排列
    });
    console.log(arr1);

数组索引方法

indexOf(数组元素) 返回该数组元素的索引号,从前面开始查找。、

代码语言:javascript复制
    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(数组元素) 返回该数组的索引号,从后面开始查找。

代码语言:javascript复制
    var arr = ['red', 'blue', 'green', 'blue'];
    console.log(arr.lastIndexOf('blue')); //3

注意

  • 只返回第一个满足条件的索引号
  • 如果在该数组里面找不到元素,则返回 -1

数组去重

问题:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重。

解决:遍历数组,然后拿着旧数组元素去查询新数组,如果该数组里面没有出现过,就添加,否则不添加。

代码语言:javascript复制
    //封装一个函数
    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() 将我们的数组转换为字符串

代码语言:javascript复制
    var arr = ['1', '2', '4', '3'];
    console.log(arr.toString()); //1,2,4,3

join(分隔符)

代码语言:javascript复制
    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()

0 人点赞