JavaScript的Array的各种方法

170 阅读5分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

一、Array的生成

//使用Array语法
let arr = new Array();  //生成一个空数组
let arr1 = new Array(10)  //生成一个数组length为10的数组
//使用字面量
let arr2 = []  //生成一个空数组
let arr3 = [10] //生成一个数组 length为1 值为10

二、Array的方法

方法作用是否修改原数组
push向数组的末尾添加一个或更多元素,并返回新的长度。true
pop删除数组的最后一个元素并返回删除的元素。true
unshift向数组的开头添加一个或更多元素,并返回新的长度。true
shift删除并返回数组的第一个元素。true
join将数组转成字符串false
concat数组合并,返回合并后的值false
slice选取数组的一部分,并返回一个新数组。false
splice从数组中添加或删除元素true
includes判断一个数组是否包含一个指定的值false
indexOf搜索数组中的元素,并返回它所在的位置。false
forEach数组每个元素都执行一次回调函数false
every检测数值元素的每个元素是否都符合条件false
filter检测数值元素,并返回符合条件所有元素的数组。false
map通过指定函数处理数组的每个元素,并返回处理后的数组。false

三、方法详解

push方法

//向数组尾部添加一个元素
let arr = [1];
arr.push(2)   //arr = [1,2]

pop方法

//数组的尾部删除 改变原数组  
let arr = [1,2]
arr.pop() // arr = [1]

unshift方法

//向数组头部添加一个元素
let arr = [1]
arr.unshift(2) //arr = [2,1]

shift方法

//从数组头部删除一个元素  改变原数组
let arr = [1,2]
arr.shift() //arr = [2]

join方法

  • 将数组的元素转成字符串。join函数内接收一个参数:该参数是分割符。默认是 " ,"

let arr = [1,2,3]
let str = arr.join()  //str = "1,2,3" 
let str1 = arr.join('-') //str1 = "1-2-3" 
let str2 = arr.join('') //str2 = "123" 

concat方法

  • concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
let arr = [1,2],
arr2=[3,4],
arr3=[5,6];
let arrConcat = arr.concat(arr2,arr3);  //arrConcat = [1,2,3,4,5,6]

slice方法

  • slice() 方法可从已有的数组中返回选定的元素。接收两个参数:第一个参数开始的下标,第二个参数结束的下标
  • 参数
参数说明
start可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
end可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
let arr = [1,2,3,4,5,6,7,8]
let citrus = arr.slice(1)  //citrus = [2,3,4,5,6,7,8]
let citrus1 = arr.slice(1,4)  //citrus1 = [2,3,4]
let citrus2 = arr.slice(-2,4)  //citrus2 = []  //倒数第二个到第四个7->6  返回空

splice方法

  • splice() 方法用于添加或删除数组中的元素。注意: 这种方法会改变原始数组。
  • 参数
参数说明
index必填.规定从哪里开始添加/删除 ,这参数是你要操作的那个下标,必须是数字
DelIndex可选。规定要删除多少个元素。必须是数字,可以为0。若是没填,则删除从index开始到数组最后所有元素
item,...,itemX可选。要添加到数组的新元素
let arr = [1,2,3]
let spliceArr = arr.splice(0,1)   //spliceArr = [1]  arr = [2,3]
arr = [1,2,3]
arr.splice(0,1,5,6,7)   //arr = [5,6,7,1,2,3]

includes方法

  • includes() 方法来判断数组里面是否包含某个值,返回* * true* * 和 * * false * * 。
[1,2,3].includes(1) // true
[1,2,3].includes(4) // false
['a','b','c'].includes(a) // true

indexOf方法

  • indexOf() 方法可以返回数组中某个元素的下标,若是没有找到会返回 -1。 | 参数 | 说明 | | --- | --- | | item | 必填.查找的元素| | statr | 可选。从那个元素开始查找| | item,...,itemX | 可选整数。数组中开始检索的位置。取值范围0-》stringObject.length - 1|
[1,2,3].indexOf(1) // 0
[1,2,3].includes(2) // 1
['a','b','c'].includes(a) // true

forEach方法

  • forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。注意:  forEach() 对于空数组是不会执行回调函数的。

//forEach 内部接收两个参数,一个是回调函数,一个是this
[1,2,3,4].forEach((item,index,arr)=>{
    //item 是当前的数组值
    //index 是当前的索引值
    //arr  循环的数组
    console.log(item,index,arr)
})

map方法

  • map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。执行回调函数的。
  • map() 方法按照原始数组元素顺序依次处理元素。 注意:  map() 不会对空数组进行检测。

注意:  map() 不会改变原始数组。

//map 内部接收两个参数,一个是回调函数,一个是this
 //item 是当前的数组值
//index 是当前的索引值
//arr  循环的数组
let arr = [
    {
      name:'张三',
      age:14
    },
    {
      name:'李四',
      age:18
    },
]
let nameList = arr.map((item,index,arr)=>item.name)  //nameList = ['张三','李四']

filter方法

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

注意:  filter() 不会对空数组进行检测。

注意:  filter() 不会改变原始数组。

//map 内部接收两个参数,一个是回调函数,一个是this
//item 是当前的数组值
//index 是当前的索引值
//arr  循环的数组
let arr = [
    {
      name:'张三',
      age:14
    },
    {
      name:'李四',
      age:18
    },
]
let ageFil = arr.filter((item,index,arr)=>item.age < 15)  // ageFil = [ { name: '张三', age: 14 } ]

every方法

  • every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every() 方法使用指定函数检测数组中的所有元素:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。

  • 如果所有元素都满足条件,则返回 true。

//map 内部接收两个参数,一个是回调函数,一个是this
//item 是当前的数组值
//index 是当前的索引值
//arr  循环的数组
let arr = [5, 6, 8, 7, 9, 12]
let a = arr.every(item => item > 8)  // false
        arr.every(item => item > 1)  //true