• 常见数组方法的总结


    会改变原数组的方法

    经过整理,我们发现 Array 原型中可以改变数组自身内容的方法有 7 个,分别是 pushpopshiftunshiftsplicesortreverse

    push/unshift/pop/shift/

    push返回值是push后的数组长度

    var arr = [012]
    console.log(arr.push(3// 4; 返回值是push后数组的长度
    console.log(arr) // [0, 1, 2, 3]; 会改变原数组

    unshift返回值是unshift后数组的长度

    var arr = [123]
    console.log(arr.unshift(0)) // 4; 返回值是unshift后数组的长度
    console.log(arr) // [0, 1, 2, 3]; 会改变原数组

    pop返回值是pop出来的元素

    var arr = [120]
    console.log(arr.pop()) // 0; 返回值是pop出来的元素
    console.log(arr) // [1, 2]; 会改变原数组

    shift返回值是shift出来的元素

    var arr = [123]
    console.log(arr.shift()) // 1; 返回值是shift出来的元素
    console.log(arr) // [2, 3]; 会改变原数组

    splice

    // 删除
    var arr = [123]
    var newArr = arr.splice(11)
    console.log(newArr) // [2] // 返回值是包含splice删除元素的新数组
    console.log(arr) // [1, 3] // 会改变原数组
    // newArr 与 arr 是不同的两个数组

    // 增加
    var arr = [123]
    console.log(arr.splice(1044)) // []
    console.log(arr) // [1, 4, 4, 2, 3]

    reverse

    var arr = [123]
    var newArr = arr.reverse() 
    console.log(newArr) // [3, 2, 1] // 返回值是reverse翻转后的原数组
    console.log(arr) // [3, 2, 1] // 会改变原数组
    // newArr 与 arr 指向同一个数组

    sort

    var arr = [1432]
    var newArr = arr.sort((a, b) => a - b)
    console.log(newArr) // [1, 2, 3, 4]; 返回值是sort排序后的原数组
    console.log(arr) // [1, 2, 3, 4]; 会改变原数组
    // newArr 与 arr 指向同一个数组

    不会改变原数组的方法

    slice

    var arr = [123]
    var newArr = arr.slice(02)
    console.log(newArr) // [1, 2]; 返回值是slice切片后的新数组
    console.log(arr) // [1, 2, 3]; 不会改变原数组
    // newArr 与 arr 是不同的两个数组

    concat

    var arr = [123]
    var newArr = arr.concat([4]) 
    console.log(newArr) // [1, 2, 3, 4]; 返回值是concat合并后的新数组
    console.log(arr) // [1, 2, 3]; 不会改变原数组
    // newArr 与 arr 是不同的两个数组

    forEach/map/filter

    forEach 对数组中的每一项运行给定函数,该方法没有返回值,并且不会改变原数组

    arr.forEach(function callback(currentValue[, index[, array]]{
     // some operate
    }[, thisArg])

    map对数组中的每一项运行给定函数,返回数组每一项map映射之后的值组成的新数组,并且不会改变原数组

    var new_array = arr.map(function callback(currentValue[, index[, array]]{
     // Return element for new_array 
    }[, thisArg])

    filter对数组中的每一项运行给定函数,返回数组中通过filter过滤函数结果为ture的项组成的新数组,并且不会改变原数组

    var newArray = arr.filter(function callback(currentValue[, index[, array]]{
     // Return 
    }[, thisArg])

    reduce

    reduce返回的是reduce归并后汇总成的单个值,并且不会改变原数组

    arr.reduce(function callback(accumulator, currentValue[, index[, array]]{
     // 
    }[, initialValue])

    参数

    accumulator

    累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue

    currentValue

    数组中正在处理的元素

    index(可选)

    数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为0,否则从索引1起始

    array(可选)

    调用 reduce() 的数组

    注意

    回调函数第一次执行时,accumulatorcurrentValue的取值有两种情况:如果调用reduce()时提供了initialValueaccumulator取值为initialValuecurrentValue取数组中的第一个值;如果没有提供 initialValue,那么accumulator取数组中的第一个值,currentValue取数组中的第二个值。

    var arr = [123]
    var reducer = function (accumulator, currentValue{
        return accumulator + currentValue
    }
    var res = arr.reduce(reducer)
    console.log(res) // 6; 返回值是reduce归并后的结果
    var res = arr.reduce(reducer, 5// 11;
    console.log(arr) // [1, 2, 3]; 不会改变原数组
  • 相关阅读:
    Merge Two Sorted Lists
    4Sum
    Letter Combinations of a Phone Number
    3Sum Closest
    3Sum
    Longest Common Prefix
    Roman to Integer
    Integer to Roman
    Container With Most Water
    Regular Expression Matching
  • 原文地址:https://www.cnblogs.com/rencoo/p/9533273.html
Copyright © 2020-2023  润新知