JavaScript数组常用方法集合

1.数组的定义

数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示

    var arr = ['a', 'b', 'c'];

2.创建数组的三种方法

    // 常规方式
    var arr = new Array();
    arr[0] = 'a';
    arr[1] = 'b';
    arr[2] = 'c';

    // 简洁方式
    var arr = new Array('a', 'b', 'c');

    // 字面方式
    var arr = ['a', 'b', 'c'];
    var arr = [
        {a: 1},
        [1, 2, 3],
        function() {return true;}
    ];

3.数组方法和属性

length 设置或返回数组元素的个数,length = 0也可以清空数组。

    var arr = ['a', 'b', 'c'];
    arr.length // 3

    arr.length = 5;
    arr.length; // 5
    arr[4] // undefined

    arr.length = 0;
    arr // []

pop()  删除数组中的最后一个元素,并返回删除的元素

    var arr = ['a', 'b', 'c'];
    arr.pop(); // c
    arr // ['a', 'b']

push()  向数组的末尾添加一个或多个新元素,并返回新数组的长度

    var arr = ['a', 'b', 'c'];
    arr.push('d'); // 4
    arr // ['a', 'b', 'c', 'd']

shift()  删除数组的第一个元素,并返回删除的元素

    var arr = ['a', 'b', 'c'];
    arr.shift(); // a
    arr // ['b', 'c']

unshift() 向数组的开头添加一个或多个元素,并返回新数组的长度

    var arr = ['a', 'b', 'c'];
    arr.unshift('A'); // 4
    arr // ['A', 'a', 'b', 'c']

toString() 把数组转换成字符串,并返回结果

    var arr = ['a', 'b', 'c'];
    arr.toString(); // a, b, c
    arr // ['a', 'b', 'c']

valueOf() 返回数组对象的原始值

    var arr = ['a', 'b', 'c'];
    arr.valueOf(); // a, b, c
    arr // ['a', 'b', 'c']

indexOf() 搜索数组中的元素,并返回它所在的位置,如果搜索的元素没有出现,则返回-1

    var arr = ['a', 'b', 'c'];
    arr.indexOf('b'); // 1
    arr // ['a', 'b', 'c']

lastIndexOf() 返回指定字符串最后出现的位置,在一个字符串中指定的位置从后往前搜索。如果搜索的元素没有出现,则返回-1

    var arr = ['a', 'b', 'c', 'b'];
    arr.lastIndexOf('b'); // 3
    arr // ['a', 'b', 'c', 'b']

join()  将数组中的每个元素转换成字符串,并将这些字符串连接起来

    var arr = ['a', 'b', 'c'];
    arr.join(); // a, b, c
    arr.join('-'); // a-b-c
    arr.join(' and '); // a and b and c
    arr // ['a', 'b', 'c']

concat()  连接两个或多个数组,并返回合并结果,不会改变现有的数组

    var arr1 = ['a', 'b', 'c'];
    var arr2 = ['d', 'e', 'f'];
    arr1.concat(arr2); // ['a', 'b', 'c', 'd', 'e', 'f']
    arr1 // ['a', 'b', 'c']

slice()  选取数组的一部分,并返回一个新数组,不会改变原数组

    // array.slice(start, end)
    // start 可选, 规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是        说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    // end 可选, 规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    var arr = ['a', 'b', 'c','d', 'e'];
    arr.slice(1,3); // ['b', 'c']
    arr // ['a', 'b', 'c','d', 'e']

splice() 从数组中添加、删除、替换元素,会改变原数组


    // array.splice(index,howmany,item1,.....,itemX)
    // index 必需, 规定从何处添加/删除元素。
    // howmany 必需, 规定应该删除多少元素。必须是数字,但可以是 "0"。
    // item1, ..., itemX 可选, 要添加到数组的新元素

    var arr1 = ['a', 'b', 'c','d', 'e'];
    arr1.splice(0,1);
    arr1 // ["b", "c", "d", "e"]

    var arr2 = ['a', 'b', 'c','d', 'e'];
    arr2.splice(0, 1, 'A');
    arr2 // ["A", "b", "c", "d", "e"]

    var arr3 = ['a', 'b', 'c','d', 'e'];
    arr3.splice(0, 0, 'A');
    arr3 // ["A", "a", "b", "c", "d", "e"]

reverse() 用于颠倒数组中元素的顺序,会改变原数组

    var arr = ['a', 'b', 'c','d', 'e'];
    arr.reverse(); // ["e", "d", "c", "b", "a"]
    arr // ["e", "d", "c", "b", "a"]

find() 返回符合传入测试函数条件的数组元素  


    // find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
    // find() 方法为数组中的每个元素都调用一次函数执行:
    // 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
    // 如果没有符合条件的元素返回 undefined

    var ages = ['10', '18', '20','36', '50'];
    function checkAdult(age) {
        return age >= 20;
    }
    ages.find(checkAdult) // 20
    ages // ['10', '18', '20','36', '50']

filter()  检测数值元素,并返回符合条件的所有元素的数组

    // filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

    var ages = ['10', '18', '20','36', '50'];
    function checkAdult(age) {
        return age >= 20;
    }

    ages.filter(checkAdult) // ["20", "36", "50"]
    ages // ['10', '18', '20','36', '50']

includes() 判断一个数组是否包含一个指定的值   

    var ages = ['10', '18', '20','36', '50'];
    ages.includes('10'); // true
    ages.includes('75'); // false
    ages // ['10', '18', '20','36', '50']

map()  通过指定函数处理数组中的每个元素,并返回处理后的

    // map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
    // map() 方法按照原始数组元素顺序依次处理元素。

    //array.map(function(currentValue,index,arr), thisValue)
    //currentValue 必须,当前元素的值
    //index 可选, 当期元素的索引值
    //arr 可选, 当期元素属于的数组对象
    //this.value 可选, 对象作为该执行回调时使用,传递给函数,用作 "this" 的值。

    var ages = [10, 18, 20, 36, 50];
    var res = ages.map(function(item, index, input) {
        return item * 10
    })

    res // [100, 180, 200, 360, 500]
    ages // [10, 18, 20, 36, 50]

forEach()  遍历数组,数组每个元素都执行一次回调函数,会改变原数组   

    // forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
    // array.forEach(function(currentValue, index, arr), thisValue)
    // currentValue 必需, 当前元素
    // index 可选, 当前元素的索引值。
    // arr 可选, 当前元素所属的数组对象。

    var ages = [10, 18, 20, 36, 50];
    var res = ages.forEach(function(item, index, input) {
        input[index] = item *10;
    })
    res // undefined
    ages // [100, 180, 200, 360, 500]

sort() 对数组的元素进行排序,默认按升序排序,会改变原数组

    var ages = [36, 50, 10, 20, 18];
    ages.sort(); // [10, 18, 20, 36, 50]
    ages // [10, 18, 20, 36, 50]

some()  检测数组元素中是否有元素符合指定条件

    // some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
    // some() 方法会依次执行数组的每个元素:
    // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
    // 如果没有满足条件的元素,则返回false。

    var ages = ['10', '18', '20','36', '50'];
    function checkAdult(age) {
        return age >= 20;
    }
    ages.some(checkAdult) // true
    ages // ['10', '18', '20','36', '50']

every() 检测数组中是否每个元素都符合指定条件

    // every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
    // every() 方法使用指定函数检测数组中的所有元素:
    // 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
    // 如果所有元素都满足条件,则返回 true。

    var ages = ['10', '18', '20','36', '50'];
    function checkAdult(age) {
        return age >= 20;
    }
    ages.every(checkAdult) // false
    ages // ['10', '18', '20','36', '50']

isArray() 判断对象是否为数组

    // isArray() 方法用于判断一个对象是否为数组。
    // 如果对象是数组返回 true,否则返回 false。

    var ages = ['10', '18', '20','36', '50'];
    Array.isArray(ages); // true
    ages // ['10', '18', '20','36', '50']

reduce()  将数组元素迭代计算为一个值(从左到右)

    // reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
    // array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    // total 必需,初始值, 或者计算结束后的返回值。
    // currentValue 必需,当前元素
    // currentIndex 可选,当前元素的索引
    // arr 可选,当前元素所属的数组对象。

    var ages = [10, 18, 20, 36, 50];
    function getSun(total, num) {
        return total + num;
    }
    ages.reduce(getSun) // 134
    ages // ['10', '18', '20','36', '50']

猜你喜欢

转载自blog.csdn.net/qq_38128179/article/details/80759381