数组常用方法

数组常用方法

会改变原始数组
  1. push() 向数组的末尾追加数据, 返回值:数组最新的
  2. pop() 删除数组的最后一个数据,返回值:被删除的数据
  3. unshift() 从数组最前面插入一个数据 返回值:数组最新
  4. shifit() 从数组最前面删除一个数据 返回值:被删除的数组
  5. reverse() 反转数组 返回值:反转后的数组 原先数组倒过来
  6. sort() 排序,把每一个数据一位一位的看待进行排序,返回值:排序后的数组
    数组.sort(funciton(a,b){return a-b}) 所有数据升序排序
    数组.sort(funciton(a,b){return b-a}) 所有数据降序排序
  7. splice() 截取数组并选择性是否插入内容
    =>数组.splice(开始索引,多少个)
    =>数组.splice(开始索引,多少个,要插入的数据)
    +从哪一个索引开始删除,从哪一个索引开始插入
    返回值:必然是一个新的数组
    你截取了多少内容,新数组里面就有多少内容
    如果没有截取内容,那么就是一个空的新数组
不会改变原始数组,以返回值的形式给到结果
  1. concat() 进行数组拼接 返回值:拼接好的数组

  2. join() 使用连接符把数组内的每一项连接成为一个字符串
    返回值:连接好的字符串
    注意:不会改变原始数组,返回值是一个字符串类型
    连接符如果不写,默认为,连接
    [1,2,3].join("-") // 1-2-3

  3. slice() 数组.slice(开始索引,结束索引)
    =》开始索引:默认值为0
    =》结束索引:默认值是length
    特点:包前不包后,可以填写负整数,当你填写负整数的 时候,等价于负整数+length
    作用:截取数组,从数组内复制一些内容出来
    注意:不会改变原始数组,

  4. indexOf() 数组.indexOf(数据,开始索引)
    =》开始索引选填,默认值是0
    作用:从开始索引向后检索改数组中是否有该数据
    返回值:如果检索到了,那么就是该数据第一次出现的索引位置
    如果没有检索到该数据,那么就是-1

  5. lastIndexOf() 数组.lastIndexOf(数据,开始索引)
    =》开始索引选填,默认值是length
    作用:从开始索引向前检索改数组中是否有该数据
    返回值:如果检索到了,那么就是该数据第一次出现的索引位置
    如果没有检索到该数据,那么就是-1

    复杂些

  6. forEach() 没有返回值 遍历数组
    =》第一个参数:表示数组的每一项
    =》第二个参数:索引
    =》第三个参数:原数组

  7. map 映射数组
    =》返回是一个新数组,并且和原始数组长度一样
    =》新数组内每一个数据都是根据原始数组中每一个数据映射出来的
    =》映射条件以return的形式书写

  8. filter() 过滤数据
    =》是一个新数组
    =》数组内是原始数组中所有满足条件的项
    =》条件以return的形式书写

  9. every() 判断数组中是不是每一个都满足条件
    =》返回值:一个布尔值
    =》如果数组中每一个都满足条件,那么返回true
    =》如果数组中任何一个都不满足条件,返回false

  10. some() 判断数组中是不是有某一个都满足条件
    =》返回值:一个布尔值
    =》如果数组中任何一个都满足条件,那么返回true
    =》如果数组中所有都不满足条件,返回false

  11. find() 作用:查找数组中某一个数据
    =》返回值:数组中你查找到的该数据
    所用在复杂数据类型的查找

  12. reduce() 数组.reduce(function(prev,item,index,arr){},初始值)
    =》函数,函数根据数组中的成员进行重复调用
    第一个参数:初始值活每一次叠加后的结果
    第二个参数:每一项
    第三个参数:索引
    第四个参数:原始数组1;
    =》初始值:默认值是0,表示从什么位置开始叠加
    =>进行叠加累计

数组去重

方案一
1. 排序 arr.sort(function(a,b){return a-b});
2. 把一样的删除掉

	for(let i=0;i<arr.length;i++){
			if(arr[index]=== arr[index+1]){
					arr.splice(index,1);
					index--; //解决数组塌陷
			}
		}

方案二
1. 准备一个新数组
2. 循环遍历原始数组,一个一个把数据添加到新数组中
=》在添加的时候,判断新数组内是否有该数据,如果有,就什么都不做,如果没有,就添加进去

	var newArr=[];
	for(var i=0;i<arr.length;i++){
		if(newArr.indexOf(arr[i]) === -1) {
			newArr.push(arr[i])
		}
	}

方案三

  1. 循环遍历原始数组
  2. 每一个数据判断后面是否还出现这个内容
    =》如果没有出现,就什么都不做,继续下一次
    =》如果有出现,那么把后面的干掉
for(var i=0;i<arr.length;i++){
	var index =arr.indexOf(arr[i],i+1)
	if(index==-1) {
		arr.splice(index,1);
		i--;
	}
}

方案4
和方案3基本一致的方式
方案3为了重复判断这一个数据出现多少次,使用了i–
不用if来判断力,用while

for(var i=0;i<arr.length;i++){
	var index = arr.indexOf(arr[i],i+1);
	while(index!==-1){
		arr.splice(index,1);
	// 注意:因为重复的时候,如果index不变,那么就是死循环
		index = arr.indexOf(arr[i],i+1)
	}
}

方案5:利用对象数据类型来进行数组去重
=》对象内的key可以是纯数字
=》对象内的key不重名
1. 准备一个空对象
2. 循环遍历数组
=》把数组内每一个数据当做键 来添加在对象内,值是什么无所谓
3. 循环遍历对象
=》把对象内的每一个key添加到一个新的数组内

	var obj = {};
	for(var i=0;i<arr.length;i++){
		var item = arr[i];
		obj[item] = 'test';
	}
	var newArr = [];
	for(var k in obj){
		newArr.push(k); 
	}

方案6
借助一个数据类型叫做Set
=>数据类型不接受重复数据
语法:var s = new Set([数据1,数据2…])
2. 把set数据类型还原成数组
=>语法1:Array.from(set数据类型)
=>语法2:[…set数据类型] 展开运算符

 var s = new Set([1,2,3,7,3,2,1]);
 // var res = Array.from(s)
 var res = [...s];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值