1.pop()
pop() 方法不接收参数,用于删除并返回数组的最后一个元素。该方法会改变原始数组
let arr = [1,2,3,[4,5,6]]
console.log(arr.pop());//[4,5,6]
console.log(arr);//[1,2,3]
2.push()
该方法接收一个参数,将参数放入数组末尾,并返回新数组长度。改变原始数组
let arr = [1,2,3,[4,5,6]]
console.log(arr.push([7,8,9]));//5
console.log(arr);//[1, 2, 3, Array(3), Array(3)]
3.unshift()
该方法接收一个参数,将参数放入数组开头,并返回新数组长度。改变原始数组
let arr = [1,2,3,[4,5,6]]
console.log(arr.unshift([7,8,9]));//5
console.log(arr);//[Array(3), 1, 2, 3, Array(3)]
4.shift()
该方法不接收参数,将数组的第一个元素删除并返回。改变原始数组
let arr = [1,2,3,[4,5,6]]
console.log(arr.shift());//1
console.log(arr);// [2, 3, Array(3)]
5.isArray()
该方法接收一个参数,用于判断参数是否是数组,对于判断一个对象是否是数组,还有其他方法,也在本专栏中
let arr = [1,2,3,[4,5,6]]
console.log(Array.isArray(arr));//true
console.log(Array.isArray(1));//false
console.log(Array.isArray({name:'srd'}));//false
6.map()
该方法接收一个函数,函数接收三个参数,
currentValue表示当前值,
index表示当前下标,
arr表示当前元素属于的数组对象
方法返回一个新的数组,记得函数一定要return,不会改变原始数组
let arr = [1,2,3,[4,5,6]]
let newArr = arr.map((currentValue,index,arr)=>{
console.log(currentValue,index,arr);
return currentValue + 1
})
console.log(arr);
console.log(newArr);
// 1 0 (4) [1, 2, 3, Array(3)]
// 2 1 (4) [1, 2, 3, Array(3)]
// 3 2 (4) [1, 2, 3, Array(3)]
// (3) [4, 5, 6] 3 (4) [1, 2, 3, Array(3)]
//因为arr中最后一个元素是数组,所以 + 1 会隐式类型转换,将数组转化为字符串
// (4) [1, 2, 3, Array(3)]
// (4) [2, 3, 4, '4,5,61']
7.filter()
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
filter() 不会对空数组进行检测。
filter() 不会改变原始数组。
参数:currentValue当前元素的值
index当前元素的索引值
arr当前元素属于的数组对象
let arr = [1,2,3,[4,5,6]]
let newArr = arr.filter((currentValue,index,arr)=>{
return !Array.isArray(currentValue)
})
console.log(arr);//[1,2,3,[4,5,6]]
console.log(newArr);//[1,2,3]
8.every()
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
every() 不会对空数组进行检测。
every() 不会改变原始数组。
参数:currentValue当前元素的值
index当前元素的索引值
arr当前元素属于的数组对象
let arr = [1,2,3,[4,5,6]]
let newArr = arr.every((currentValue,index,arr)=>{
return currentValue > 0
})
console.log(arr);//[1,2,3,[4,5,6]]
console.log(newArr);//false
9.some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
some() 不会对空数组进行检测。
some() 不会改变原始数组。
参数:currentValue当前元素的值
index当前元素的索引值
arr当前元素属于的数组对象
let arr = [1,2,3,[4,5,6]]
let newArr = arr.some((currentValue,index,arr)=>{
return currentValue > 0
})
console.log(arr);//[1,2,3,[4,5,6]]
console.log(newArr);//true
10.splice()
splice() 方法用于添加或删除数组中的元素。
这种方法会改变原始数组。
如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
参数:index 必须,规定从何处添加/删除元素。该参数是开始插入和删除的数组元素的下标,必须是数字
howmany 可选,规定应该删除多少元素。必须是数字,但可以是“0”,如果为规定此参数,则删除从index开始到原数组结 尾的所有元素。
item…itemX 可选,要添加到数组的新元素
let arr = [1,2,3,[4,5,6]]
// let newArr = arr.splice(0,2);
// console.log(newArr);//[1,2]
// console.log(arr);//[3,[4,5,6]]
// let newArr = arr.splice(5,0,7,8,9)
// console.log(newArr);//[]
// console.log(arr);//[1, 2, 3, Array(3), 7, 8, 9]
11.slice()
slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
slice() 方法不会改变原始数组。
参数:start 规定从何处开始选取。如果该参数为负数,则表示从原数组的倒数第几个元素开始提取,slice(-2) 表示提取原数组中 的倒数第二个元素到最后一个元素(包含最后一个元素)。
end() 规定从何处结束选取。没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取
let arr = [1,2,3,[4,5,6]]
let newArr = arr.slice(2,5)
console.log(newArr);//[3,[4,5,6]]
console.log(arr);//[1,2,3,[4,5,6]]
12. indexOf()
indexOf() 方法可返回某个指定的字符串值(或元素)在字符串(数组)中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
indexOf() 方法区分大小写。
参数:value 必须,规定需要检查的字符串值
start 可选,规定在自负串开始检索的位置,如果省略,则将从字符串的首字符开始检索
let arr = [1,2,3,[4,5,6],1]
let index = arr.indexOf(1)
console.log(index);//0
console.log(arr.indexOf(1,2));//4
console.log(arr.indexOf(0));//-1
let str = 'srd'
console.log(str.indexOf('s'));//0
13.includes
includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
参数:searchElement 必须,需要查找的元素值
fromIndex 从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默 认为 0。
let arr = [1,2,3,[4,5,6]]
console.log(arr.includes(1));//true
console.log(arr.includes(1,1));//false
14.concat()
方法接收一个数组参数,用于连接数组,返回一个新数组,不会改变原始数组
let arr = [1,2,3,[4,5,6]]
let arr2 = [7,8,9]
console.log(arr.concat(arr2));//[1, 2, 3, Array(3), 7, 8, 9]
15.join()
方法接收一个字符串,若不是字符串,则转化为字符串,返回一个字符串,不改变原数组
let arr = [1,2,3,[4,5,6]]
console.log(arr);//[1, 2, 3, Array(3)]
console.log(arr.join('---'));//1---2---3---4,5,6
console.log(arr.join(1));//1121314,5,6
16.forEach
方法接收一个函数,函数有两个参数,value表示当前的值,index表示当前的下标,注意break和return不能跳出forEach,只有抛出错误才能终止循环
let arr = [1,2,3,[4,5,6]]
arr.forEach((value,index)=>{
console.log(value,index);
throw new Error('错误')
})
//1 0
// test.js:4 Uncaught Error: 错误
// at test.js:4:11
// at Array.forEach (<anonymous>)
// at test.js:2:5
17.sort()
方法可接受一个函数,函数有两个参数,可决定排序规则,会改变原始数组
let arr = [1,2,3,4,[8,9]]
console.log(arr.sort((a,b)=>b - a));//[4, 3, 2, 1, Array(2)]
console.log(arr);//[4, 3, 2, 1, Array(2)]
console.log(arr.sort((a,b)=>a - b));//[1, 2, 3, 4, Array(2)]
18.reverse()
方法用于将反序数组元素的顺序
19.find()
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
find() 对于空数组,函数是不会执行的。
find() 并没有改变数组的原始值。
let arr = [1,2,3,4,[8,9],[10,11]]
console.log(arr.find((item) =>{
return Array.isArray(item)
}));//[8,9]
20.findIndex
该方法于find相似,只是返回的是下标,而不是值
21.fill()
fill() 方法用于将一个固定值替换数组的元素。
参数:value 必须,填充的值
start 可选,开始填充的位置,默认为0
end 可选,停止填充的位置,默认为array.length
let arr = [1,2,3,4,[8,9],[10,11]]
let newArr = arr.fill(0)
console.log(arr);
console.log(newArr);
console.log(new Array(3).fill(1));
console.log(arr.fill(3,2,4));
// [0, 0, 0, 0, 0, 0]
// [0, 0, 0, 0, 0, 0]
// [1, 1, 1]
// [0, 0, 3, 3, 0, 0]
let arr = [1,2,3,4,[8,9],[10,11]]
//要用of不能用in
for(let index of arr.keys()){
console.log(index);//0,1,2,3,4,5
}
for(let value of arr.values()){
console.log(value);//1,2,3,4,[8,9],[10,11]
}
for(let k of arr.entries()){
console.log(k);
// [0, 1]
// [1, 2]
// [2, 3]
// [3, 4]
// [4, Array(2)]
// [5, Array(2)]
}
22.reduce()
方法不改变原数组
参数一: callback 函数(执行数组中每个值的函数,包含四个参数):
prev 必需 (上一次调用回调返回的值,或者是提供的初始值(initialValue))
cur 必需(数组中当前被处理的元素)
index 可选 (当前元素在数组中的索引)
arr 可选 (调用 reduce 的数组)
参数二:initialValue 可选 (表示初始值,作为第一次调用 callback 的第一个参数。)提供初始值,cur 从数组第一项开始,若不提供初始值,则 cur 从第二项开始执行,对应的第一次 prev 是数组第一项的值
// arr.reduce(callback,[initialValue])
array.reduce((prev, cur, index, arr)=> {
/***/
}, initialValue)