js(javaScript)如何取出数组中的不同值(去重)

这也是我在做项目遇到的问题,我的做法是把数组中的相同值都删除掉,剩下的就不一样了,可能写出来跟讲出来的,来理解还是不一样,下面附上我的全代码与注解:(方法很多种,用ES6、indexOf等等)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>	
</body>
</html>
<script>
function fn(arr){
// 定义一个新数组,用来存放不同值,与传进来的数组arr做比较的
var newArr=[];
//在newArr添加传进来的数组的第一项
newArr.push(arr[0]);
var j=0;
// 遍历数组停止的条件,由于不知道什么时候停止循环,所有用while
//循环判断,为什么用两数组的长度做循环条件,看下面代码的数组的删增就会明白
	while(newArr.length<arr.length){
		// 这里的i=j+1,for循环是删除与arr相同的值
		for (var i = j+1; i<arr.length; i++) {
			// arr的第一项不需要比较
			// 比较是从arr的第二项开始于newArr的第一项开始
			if(arr[i]==newArr[j]){
				// 没当有相同值时,就删除掉
				arr.splice(i,1);
				// 删除掉之后,后面的项的索引(下标)都会减1
				// 所以避免有遗漏项,所以索引要对应减1
				i--;
			}
		}
		// 当把相同值删除完时,newArr长度要加一
		j++;
		// 把arr下一个不同值存起来用来作比较
		newArr.push(arr[j]);
	}
	// 当循环结束后arr的相同值也就删除完了
	return arr;
}

var arr=[1,2,3,3,4,6,6,6,9,9,9,9];
fn(arr);

console.log(arr);
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值