js 数组方法

283 阅读4分钟

数组方法

  • arr.length 返回数组的长度
  • isArray()确定对象是否为数组。

添加和删除

  1. push() 添加到数组末尾
let arr=[1,2]
arr.push(3)//[1,2,3]
  1. pop() 删除数组末尾元素
let arr=[1,2,3,4,5]
arr.pop()// [1,2,3,4]
  1. unshift() 添加到数组首位
let arr=[2,3]
arr.unshift(1)//[1,2,3]
  1. shift() 删除数组首位元素
let arr=[1,2,3,4]
arr.shift()//[2,3,4]
  1. splice() 添加或删除数组
let arr=[1,2,3,4,5]
arr.splice(2,1)//[1,2,4,5]
arr.splice(2,0,1)//[1,2,1,4,5]
arr.splice(1,3,6)//[1,6,5]
  1. copyWithin() 将数组元素复制到数组中的另一个位置,覆盖现有值。
var fruits = ["张三", "李四", "王五", "赵六"];
fruits.copyWithin(2, 0);["张三", "李四","张三", "李四"]

输出为字符串

  1. toString() 方法 将数组转换为字符串,并返回结果
let arr=['hello','word']  
arr.toString() //hello,word
  1. join() 方法 将数组的所有元素连接成一个字符串
let arr=['hello','word']     
arr.join() //hello,word   
arr.join('-')//hello-word

合并数组

  1. concat() 连接2个或更多数组,并返回结果
let arr1=['hello']
let arr2=['word']
let arr3=[1,2,3]
arr1.concat(arr2)//['hello', 'word']
arr1.concat(arr2,arr3) //['hello', 'word', 1, 2, 3]     

迭代数组

  1. every() 检查数组中的所有元素是否通过测试
let arr=[2,3,4,6,34,56,21,33]
//判断是否是2的倍数
arr.every((item,index,arr)=>{
	return item%2==0
})//false
  1. some() 检查数组中的任何元素是否通过测试。
let arr=[2,3,4,6,34,56,21,33]
//判断是否有2的倍数
arr.some((item,index,arr)=>{
	return item%2==0
})//true
  1. filter() 使用数组中通过测试的每个元素创建新数组 过滤数组
let arr=[2,3,4,6,34,56,21,33]
//返回是2的倍数
arr.filter((item,index,arr)=>{
	return item%2==0
})// [2, 4, 6, 34, 56]
  1. includes()  方法确定数组是否包含指定的元素 区分大小写
let arr=['张三','李四','王五','赵六']
arr.includes("张三") //true
  1. findIndex() 方法对数组中存在的每个元素执行一次函数:如果找到函数返回 true 值的数组元素,则 findIndex() 返回该数组元素的索引(并且不检查剩余值)没有返回 -1
let arr=[1,2,3,4,5,6,7,8,9]
arr.findIndex((item,index,arr)=>{
  return item>=5
})//4
  1. find() 方法对数组中存在的每个元素执行一次函数:如果找到函数返回 true 值的数组元素,则 find() 返回该数组元素的值(并且不检查剩余值)没有返回 undefined
let arr=[1,2,3,4,5,6,7,8,9]
arr.find((item,index,arr)=>{
  return item>5
})//6
  1. forEach() 方法为每个数组元素调用函数 ,没有返回值 遍历数组
let arr=[2,3,4,6,34,56,21,33]
arr.forEach((item,index,arr)=>{
	if(item%2==0){
		console.log(item);
	}
})//2,4,6,34,56
  1. map() 使用为每个数组元素调用函数的结果创建新数组
let arr=[
	{
		name:'张三',
		age:14
	},
	{
		name:'李四',
		age:16
	},
	{
		name:'王五',
		age:19
	},
	{
		name:'赵六',
		age:18
	},
   ]
 arr.map((item,index,arr)=>{
	 return item.name
 })  //['张三', '李四', '王五', '赵六']
 arr.map((item,index,arr)=>{
   return item.age
 })//[14, 16, 19, 18]
  1. reduce() 方法为数组的每个值(从左到右)执行提供的函数。
let arr=[1,2,3,4,5,6,7]
//从左往右相加
arr.reduce((total,item,index,arr)=>{
	return total+item
})// 28
、、从左往右相减
 arr.reduce((total,item,index,arr)=>{
	return total-item
})// -26
  1. reduceRight() 方法为数组的每个值(从右到左)执行提供的函数。
let arr=[1,2,3,4,5,6,7]
//从右往左相加
arr.reduce((total,item,index,arr)=>{
	return total+item
})// 28
//从右往左相减
arr.reduceRight((total,item,index,arr)=>{
  return total-item
})// -14
  1. keys() 方法返回带有数组键的 Array Iterator对象,不改变原数组
let arr=['张三','李四','王五','赵六']
for(i of arr.keys()){
  console.log(i);
}//0,1,2,3
  1. entries() 方法返回带有键/值对的 Array Iterator对象,不改变原数组
let arr=['张三','李四','王五','赵六']
for(i of arr.entries()){
	console.log(i);
}//[0, '张三'],[1, '李四'],[2, '王五'],[3, '赵六']
  1. from() 方法从具有 length 属性或可迭代对象的任何对象返回 Array 对象。
let arr= Array.from("ABCDEFG");
console.log(arr);//['A', 'B', 'C', 'D', 'E', 'F', 'G']

数组排序与搜索

  1. reverse() 数组反序排列
let arr=[1,2,3,4,5,6,7]
arr.reverse()//[7, 6, 5, 4, 3, 2, 1]
  1. sort() 方法对数组的项目进行排序
let arr=['c','a','e','b','d']
//默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。
arr.sort()//['a', 'b', 'c', 'd', 'e']
arr.sort((a,b)=>a-b)//[1, 2, 3, 4, 5, 6]
arr.sort((a,b)=>b-a)//[6, 5, 4, 3, 2, 1]
let names =['Ana', 'ana', 'john', 'John']; 
names.sort()//["Ana", "John", "ana", "john"]
//既然a在字母表里排第一位,为何ana却排在了John之后呢?
//这是因为JavaScript在做字符比较的时候,是根据字符对应的ASCII值来比较的。
//例如,A、J、a、j对应的ASCII值分别是65757106。
 names.sort((a, b)=>{
   if (a.toLowerCase() < b.toLowerCase()){
   return -1
 }
  if (a.toLowerCase() > b.toLowerCase()){
   return 1
 }
   return 0; 
});
  1. indexOf() 方法返回与参数匹配的第一个元素的索引 ,没有返回-1
let arr=[4,1,2,3,4]
arr.indexOf(4)//0
arr.indexOf(5)//-1
  1. lastIndexOf() 方法返回 与参数匹配的最后一个元素的索引 没有返回-1
let arr=[4,1,2,3,4]
arr.lastIndexOf(4)//4
arr.lastIndexOf(5)//-1
  1. slice() 传入索引值,将数组里对应索引范围内的元素作为新数组返回
let arr=[0,1,2,3,4,5]
arr.slice()//[0,1,2,3,4,5]
arr.slice(1)//[1, 2, 3, 4, 5]
arr.slice(1,4)// [1, 2, 3]