「这是我参与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