温故·JS数组方法

刘听风 385 2022-06-30

原数组改变的方法有:

push pop shift unshift reverse sort splice

不改变原数组的方法有:

concat map filter join every some indexOf slice forEach

  1. Array.push() ——原数组改变

描述

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

示例

        var arr = [1, 2, 3, 4]
        var re = arr.push(5, 6, 7, 8)
        console.log(re, arr) //re=8,arr=[1,2,3,4,5,6,7,8]
  1. Array.pop()——原数组改变

描述

Array.pop(),删除数组最后一个元素并返回它,若该数组为空,则返回undefined。

示例

        var arr = [1, 2, 3, 4]
        var arr1 = []
        var re = arr.pop()
        var re1 = arr1.pop()
        console.log(re, arr) //re=4,arr=[1,2,3]
        console.log(re1, arr1) //re1=undefined,arr1=[]
  1. Array.unshift()——原数组改变

描述

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

示例

        var arr = [1, 2, 3, 4]
        var re = arr.unshift(0)
        console.log(re, arr) //re=5,arr=[0,1,2,3,4]
  1. Array.shift()——原数组改变

描述

Array.shift(),删除数组的第一项,并返回第一个元素的值。若该数组为空,则返回undefined。

示例

        var arr = [1, 2, 3, 4]
        var re = arr.shift()
        console.log(re, arr) //re=1,arr=[2,3,4]
  1. Array.concat()——原数组不变

描述

Array.concat(arr1,arr2…),合并两个或多个数组(包括数组调用者),生成一个新的数组。

示例

        var arr = [1, 2]
        var arr1 = [3, 4]
        var arr2 = [5, 6]
        var re = arr.concat(arr1, arr2)
        console.log(re, arr) //re=[1,2,3,4,5,6],arr=[1,2]
  1. Array.join()——原数组不变

描述

Array.join(),将数组的每一项用指定字符连接形成一个字符串。默认连接字符为 “,” 逗号。

示例

        var arr = [1, 2, 3, 4, 5]
        var re = arr.join("-")
        console.log(re, arr) //re=1-2-3-4-5,arr=[1, 2, 3, 4, 5]
  1. Array.reverse()——原数组改变

描述

Array.reverse(),将数组倒序。

示例

        var arr = [1, 2, 3, 4, 5]
        var re = arr.reverse()
        console.log(re, arr) //re=[5, 4, 3, 2, 1],arr=[5, 4, 3, 2, 1]
  1. Array.sort()——原数组改变

描述

Array.sort(),对数组元素进行排序。按照字符串UniCode码排序。

示例
从小到大

        var compare = function (a, b) {
            return a - b 
        }
        var arr = [2, 1, 4, 3, 5]
        var re = arr.sort(compare)
        console.log(re, arr) //re=[1, 2, 3, 4, 5] ,arr=[1, 2, 3, 4, 5] 

从大到小

        var compare = function (a, b) {
            return b - a 
        }
        var arr = [2, 1, 4, 3, 5]
        var re = arr.sort(compare)
        console.log(re, arr) //re=[5, 4, 3, 2, 1] ,arr=[5, 4, 3, 2, 1]

按照数组中对象的某个值进行排序

        function arr_obj(obj_value) {
            return function conpare(a, b) {
                return a[obj_value] - b[obj_value]
            }
        }
        var arr = [{ name: "小明", age: "14" }, { name: "小红", age: "12" }, { name: "小鹏", age: "13" }]
        var re = arr.sort(arr_obj("age"))
        console.log(re, arr) 
  1. Array.map(function)——原数组不变

描述

Array.map(function),原数组的每一项执行函数后,返回一个新的数组。

  1. Array.forEach(function)——原数组不变

描述

Array.forEach(function),用于调用数组的每个元素,并将元素传递给回调函数。(注意该方法和map的区别,若直接打印Array.forEach,结果为undefined)

  1. Array.filter(function)——原数组不变

描述

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。返回新数组。
filter()按照序号从小到大遍历Array,对每个元素仅调用一次方法,对于序号i,调用方法时带有三个参数:currentValue,index,arr
注意:  filter() 不会对空数组进行检测。

语法

Array.filter(function(currentValue,index,arr), thisValue)