数组操作基础知识

211 阅读5分钟

一、转换数组

1、将数组转化为字符串

    array.toString()
    eg: let arr = ['1', '2', 'tom']
        console.log(arr.toString())
        输出:1,2,tom
    
2、将数组转化为字符串,用特定符号分隔

    array.join()
    eg: let arr = ['1', '2', 'tom']
        console.log(arr.join('?'))
        输出:1?2?tom
        注意: 可以替换?为其他符号分隔数组

二、删除添加数组第一项与最后一项

1、删除添加数组最后一项pop 和 push

    array.pop()
    eg: let arr = ['1', '2', 'tom']
        let a = arr.pop()    
        console.log(a)
        console.log(arr)
        输出:tom
        输出:['1', '2']
        注意:这里调用pop()后返回值为删除项

    array.push()
    eg: let arr = ['1', '2', 'tom']
        let a = arr.push('park')    
        console.log(a)
        console.log(arr)
        输出:4
        输出:['1', '2', 'tom', 'park']
        注意:这里调用push()后返回值添加元素后数组的长度

2、删除添加数组第一项shift()和unshift

    array.shift()
    eg: let arr = ['1', '2', 'tom']
        let a = arr.shift()    
        console.log(a)
        console.log(arr)
        输出:'1'
        输出:['2', 'tom']
        注意:这里调用shift()后返回值为删除项

    array.unshift()
    eg: let arr = ['1', '2', 'tom']
        let a = arr.unshift('park')    
        console.log(a)
        console.log(arr)
        输出:4
        输出:['park', '1', '2', 'tom']
        注意:这里调用unshift()后返回值添加元素后数组的长度

三、拼接添加与删除数组元素splice()

    array.splice()
    eg: let arr = ['1', '2', 'tom']
        let a = arr.splice(1, 0, 'park')
        第一个参数代表从第几个元素开始,第二个参数代表删除从第一个参数开始后几项,其余参数就是添加到参数一代表的位置后的元素
        console.log(a)
        console.log(arr)
        输出:[]
        输出:['1', 'park', '2', 'tom']
        注意:这里调用splice()后返回值为删除元素的数组,这里没删除所以为[]

四、合并数组concat()

    array.concat()
    eg: let arr = ['1', '2', 'tom']
        let arr1 = [3, 4]
        let arr2 = [5, 6]
        let arr3 = arr.concat(arr1, arr2)
        console.log(arr3)
        console.log(arr)
        输出:["1", "2", "tom", 3, 4, 5, 6]
        输出:['1', '2', 'tom']
        注意:这里调用concat()后返回值为合并之后的数组

五、裁剪数组slice()

    array.slice()
    eg: let arr = ['1', '2', 'tom', 'part']
        let arr1 = arr.slice(2, 2)
        第一个参数代表从第几个位置开始截取,第二个参数代表往后截取到参数为止的个数(但不包括参数位置),如果只有一个参数就从参数位置开始截取到最后
        console.log(arr1)
        console.log(arr)
        输出:["tom"]
        输出:['1', '2', 'tom', 'part']
        注意:这里调用slice()后返回值为截取出来的数组

六、数组排序

    array.sort()
    sort()对于字符串排序是用ascll码,但数字排序不准确,所以一般用函数辅助处理降序或升序排列数字
    let arr = [40, 100, 1, 5, 25, 10]
    let arr1 = arr.sort(function(a, b){return a - b})
    let arr2 = arr.sort(function(a, b){return a - b})
    console.log(arr1)
    console.log(arr2)
    输出:[1,5,10,25,40,100]
    输出:[100,40,25,10,5,1]
    
    array.reverse()反转数组排序

七、重点常用数组迭代方法

1、array.forEach()
    
    let arr = [40, 100, 1, 5, 25, 10]
    arr.forEach((value, index, array) => {
        //value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
        console.log(value, index, array)
        输出:  40  0 [40, 100, 1, 5, 25, 10]
                100 1 [40, 100, 1, 5, 25, 10]
                1   2 [40, 100, 1, 5, 25, 10]
                5   3 [40, 100, 1, 5, 25, 10]
                25  4 [40, 100, 1, 5, 25, 10]
                10  5 [40, 100, 1, 5, 25, 10]
    })

2、array.map()

    let arr = [40, 100, 1, 5, 25, 10]
    let arr1 = arr.map((value, index, array) => {
        //value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
        console.log(value, index, array)
        return value * 2
        输出:  40  0 [40, 100, 1, 5, 25, 10]
                100 1 [40, 100, 1, 5, 25, 10]
                1   2 [40, 100, 1, 5, 25, 10]
                5   3 [40, 100, 1, 5, 25, 10]
                25  4 [40, 100, 1, 5, 25, 10]
                10  5 [40, 100, 1, 5, 25, 10]
    })
    console.log(arr)
    console.log(arr1)
    输出:  [40, 100, 1, 5, 25, 10]
            [80, 200, 2, 10, 50, 20]
    注意:map函数循环处理不会改变原数组,并且不会再空数组上执行
    
3、array.filter()

    let arr = [40, 100, 1, 5, 25, 10]
    let arr1 = arr.filter((value, index, array) => {
        //value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
        console.log(value, index, array)
        return value > 18
        输出:  40  0 [40, 100, 1, 5, 25, 10]
                100 1 [40, 100, 1, 5, 25, 10]
                1   2 [40, 100, 1, 5, 25, 10]
                5   3 [40, 100, 1, 5, 25, 10]
                25  4 [40, 100, 1, 5, 25, 10]
                10  5 [40, 100, 1, 5, 25, 10]
    })
    console.log(arr)
    console.log(arr1)
    输出:  [40, 100, 1, 5, 25, 10]
            [40, 100, 25]

4、array.indexOf()
    
    let arr = [40, 100, 1, 5, 25, 10]
    let arr1 = arr.indexOf(100)
    let arr2 = arr.indexOf(1000)
    console.log(arr)
    console.log(arr2)
    输出:  1
            -1
    注意:indexOf()用来检验数组是否包含某一项,如果包含则返回该元素在数组的索引位置,如果不包含则返回值为-1,lastIndexOf()也是一样,只是寻找的顺序是从最后一项往前寻找

5、array.every()和array.some()

    array.every()用来检验数组中每一项是否满足某个条件,array.some()
    用来检验数组中某些是否满足某个条件。它们的返回值满足条件为true,
    不满足为false,且都不会改变原数组。
 
    
6、array.includes()

    includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回
    true,否则false。接收两个参数,第一个参数为需要查找的元素,第二个
    参数可以省略默认为0,是从0这个下标位置开始查询,也可以为负数,这时
    查找开始索引位置为负数加上数据长度,如果还是为负数或0则全数组查找
    ,如果大于零则从该索引位置查找
    
    eg:
        var arr = ['a', 'b', 'c']
        arr.includes('c', 3)   //false
        arr.includes('c', 100)// false
        
        // 数组长度是3
        // fromIndex 是 -100
        // computed index 是 3 + (-100) = -97
        var arr = ['a', 'b', 'c']
        arr.includes('a', -100) // true
        arr.includes('b', -100) // true
        arr.includes('c', -100) // true