数组中常用的API

472 阅读4分钟

数组方法总结

push()方法

在数组最后添加一个或多个新的元素,并返回新数组的长度 末尾增加

let arr = [1,2,3,4] 
console.log(arr.push(5)) //5,返回新数组的长度 
console.log(arr) //[1,2,3,4,5]

pop()方法

删除数组最后一个元素,并返回数组 末尾删除

let arr = [1,2,3,4] 
let num = arr.pop() 
console.log(num) //4,返回被删除的元素 
console.log(arr) //[1,2,3]

unshift()方法

在数组前面添加一个或多个元素,并返回新的长度 首部添加

let arr = [1,2,3,4] 
console.log(arr.unshift(5,1)) //6,返回新数组的长度 
console.log(arr) //[5,1,1,2,3,4]

shift()方法

删除数组首部元素,并返回被删的元素 首部删除

let arr = [1,2,3,4] 
let num = arr.shift() 
console.log(num) //1,返回新数组的长度 
console.log(arr) //[2,3,4]

splice()方法

对数组进行删除和修改操作,返回被删除的元素组成的数组

语法:splice(index,length,增加的元素1,增加的元素2,...)

参数详解:

  • index:要删除元素的下标

  • length:删除的长度

  • 增加的元素:从 index开始 新增的元素,放到被删除的数组中总成新的数组

let arr = [1,2,3,4,5] 
// 选择从数组下标为1的元素开始,删除3个元素 ====> 删除2,3,4
// 在数组下标为1处开始,增加元素 1,[1,2],[1,2,3]
let reArr3 = arr.splice(1,3,1,[1,2],[1,2,3]) 
console.log(reArr3) //[2,3,4],返回删除元素组成的数组 
console.log(arr) //[1,1,[1,2],[1,2,3],5]

slice()方法

剪切当前数组,并返回一个包含剪切值的新数组,不会改变原数组

语法:slice(starIndex,endIndex)

参数详解:

  • starIndex:剪切开始的位置,返回的数组中包含开始位置的值

  • endIndex:剪切结束的位置,不包含结束位置的值

let arr = [1,2,3,4,5] 
let newArr = arr.slice(2,4) 
console.log(newArr) //[3,4]

concat()方法

合并两个或多个数组,返回新数组,不会改变原数组

let a = [1,2,3] 
let b = [2,3,4] 
let c = a.concat(b) 
console.log(c) //[1,2,3,2,3,4]

join()方法

将数组转化为字符串,不会改变原数组,此方法会返回转换后的字符串,默认以, 分隔

let arr = [1,2,3,4] 
console.log(arr.join())// 1,2,3,4 
console.log(arr)// [1,2,3,4]

reverse()方法

用于颠倒数组中元素的顺序,返回的是颠倒后的数组,会改变原数组

let arr = [1,2,3,4,5] 
let re = arr.reverse() 
console.log(re) //[5,4,3,2,1] 
console.log(arr)//[5,4,3,2,1]

indexOf() 方法 和 lastIndexOf() 方法

两者都会返回元素首次在数组中的位置,未找到就返回-1

区别在于:indexOf 从头查找 lastIndexOf 从尾部查找

语法:indexOf(某元素,startIndex) lastIndex(某元素,startIndex)

参数说明:

  • 某元素:要查找的元素

  • startIndex:开始查找的下标

filter()方法

返回数组中满足条件的元素组成新数组,原数组不变

语法:filter(function(item,index,arry){})

参数说明:

  • 回调函数会在每次遍历时判断 item 是否符合条件
let arr = [1,2,3,4,5] 
let re = arr.filter((item)=>{ 
   return item > 3 
}) 
console.log(arr) //[1,2,3,4,5] 
console.log(re) //[4,5]

map()方法

遍历数组的每个元素都会执行一遍回调函数,会把执行完的回调函数放到新数值中返回,不改变原数组

语法:数组.map(function(item,index,arr){})

参数说明:

  • 是在遍历过程中对米格元素执行的回调函数
let arr = [1, 2, 3, 4] 
let re = arr.map((item,index,arr)=>{ 
    return item*10 
}) 
console.log(re);  // [10, 20, 30, 40]; 
console.log(arr);  // [1, 2, 3, 4]

every()方法

用于判断数组中的元素是否满足条件,当每个元素都满足条件时,返回 true,否则返回 false

语法:数组.every(function(item,index,arr){})

let array = [1, 2, 3, 4]; 
let bo = array.every((item, index, array) => {   
    return item > 2; 
}); 
console.log(bo);  // false;

some()方法

在遍历时查找是否满足条件的值,一旦找到就立刻停止,找到返回 true ,没有找到返回 false 。

语法:some(function(item,index,arr){})

let array = [1, 2, 3, 4, 6]; 
let temp = array.some((item, index, array) => {
    return item > 5; 
}); 
console.log(temp);  // true

forEach()方法

遍历整个数组,中途不能中断

语法:forEach(function(item,index,array){},this)

参数说明:

  • item:数组当前遍历的元素,默认从左到右依次获取数组元素

  • index:数组当前元素的索引,第一个元素的索引为0,依次累加

  • arr:当前遍历的数组

  • this:回调函数中this的指向

let arr = [1,2,3,4,5]
let obj = {a:1}
arr.forEach(function(item,index,arr){
  console.log(`当前元素为${item}索引为${index},属于数组${arr}`);
  console.log(this);//this指向obj
},obj)