JavaScript(3)数组去重的5种方法 也赶来了!

数组对象去重完毕了,也看看数组去重吧。

一、第一种方法

  1. 使用 indexOf()和 push() 进行数组去重。

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
注意: indexOf() 方法区分大小写。

	var arr = [3,3,undefined,undefined,null,null,NaN,NaN,{},{},true,true,'false','false'];

	function unique(arr) {
		if (!Array.isArray(arr)) { //判断是否是数组
				console.log('不是数组!')
				return;
		}
		var newArr = [];
		for (var i = 0; i < arr.length; i++) {
			if (newArr.indexOf(arr[i]) === -1) {
				newArr.push(arr[i]);
			}
		}
		return newArr;
	}
	var demo = unique(arr);
	console.log("去重后的数组", demo);
	//去重后的数组 (9) [3, undefined, null, NaN, NaN, {…}, {…}, true, "false"]
  • NaN与{}没有被去重

二、第二种方法

  1. 使用 sort()和 push() 进行数组去重。

sort() 方法用于对数组的元素进行排序(升、降)。
sort() 默认排序顺序为按字母升序。
注:默认字母排序时:40(fourty)在5(five)前。

	var arr = [3, 3, undefined, undefined, null, null, NaN, NaN, {}, {}, true, true, 'false', 'false'];

	function unique(arr) {
		arr = arr.sort();
		//排序后的数组 (14) [3, 3, NaN, NaN, {…}, {…}, "false", "false", null, null, true, true, undefined, undefined]
		
		var arrry = [arr[0]];
		for (var i = 1; i < arr.length; i++) {
			if (arr[i] !== arr[i - 1]) {
				arrry.push(arr[i]);
			}
		}
		return arrry;
	}
	console.log("去重后的数组", (unique(arr)));
	//去重后的数组 (9) [3, NaN, NaN, {…}, {…}, "false", null, true, undefined]
  • NaN与{}没有被去重

三、第三种方法

  1. 使用 includes()进行数组去重。

includes() 方法用于判断字符串是否包含指定的子字符串。
如果找到匹配的字符串则返回 true,否则返回 false。
includes() 方法区分大小写。
语法: str.includes(searchValue,start)
searchValue:要查找的字符串。start:开始的索引位置(可不写)。

	var arr = [3, 3, undefined, undefined, null, null, NaN, NaN, {}, {}, true, true, 'false', 'false'];
	function unique(arr) {
		var array = [];
		for (var i = 0; i < arr.length; i++) {
			if (!array.includes(arr[i])) { //includes 检测数组是否有某个值
				array.push(arr[i]);
			}
		}
		return array
	}
	console.log("去重后的数组", (unique(arr)));
	//去重后的数组 (8) [3, undefined, null, NaN, {…}, {…}, true, "false"]
  • {}没有被去重

四、第四种方法

  1. 使用 filter()进行数组去重。

意如其名,过滤。
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
filter() 不会对空数组进行检测。不会改变原始数组。
array.filter(function(currentValue,index,arr), thisValue)

currentValue当前元素值(必)
index当前元素索引值(可)
arr当前元素属于的数组对象(可)
thisValue对象作为该执行回调时使用,传递给函数,用作 “this” 的值。(可)
		var arr = [3, 3, undefined, undefined, null, null, NaN, NaN, {}, {}, true, true, 'false', 'false'];
			function unique(arr) {
				return arr.filter(function(currentValue,index,arr){
					return arr.indexOf(currentValue, 0) === index;
				});
			}
			console.log("去重后的数组", (unique(arr)));
		//去重后的数组 (7) [3, undefined, null, {…}, {…}, true, "false"]
  • {}没有被去重;NaN被过滤消失

五、第五种方法

  1. 使用 ES6的 Set()进行数组去重。

new Set(数组):数组转Set。
Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。
Array.from(object, mapFunction, thisValue)
object:要转换为数组的对象。(必)

			var arr = [3, 3, undefined, undefined, null, null, NaN, NaN, {}, {}, true, true, 'false', 'false'];
			//先放进Set让值唯一,再转换回数组格式
			function unique (arr) {
			  return Array.from(new Set(arr))
			}
			console.log("去重后的数组", (unique(arr)));
			//去重后的数组 (8) [3, undefined, null, NaN, {…}, {…}, true, "false"]
  • {}没有被去重

六、总结

这些主要是我再熟悉使用javascript的方法。
参考指路:大佬版12种方法的javaScript数组去重
参考指路: javascripy菜鸟教程

  1. 数组与字符串的相互转换:指路—>数组、字符串的相互转换!那可是真必备
  2. 删除替换数组特定值:指路—>删除、替换 数组 特定值!
  3. 数组对象去重:指路—>数组对象去重!必备
  4. 数组去重的5种方法:指路—>数组去重的5种方法 也赶来了!
  5. javascript菜鸟教程:指路—>JavaScript 教程
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值