学习这种事情,贵在坚持,作为刚刚进入前端的一只小码农,决定默默的坚持写自己的学习博客,可能写的很多东西对于大神来说很小儿科,但是相信我写的东西会越来越成熟。
今天就来写一下JavaScript中的数组去重,数组去重,顾名思义就是删除数组中相同值得数据;
思路:创建一个新的空数组,将去重后的数据放在新的数组中,首先将操作数组中的索引为 0的数据赋值于新数组,这样做的目的是为了减少循环,然后让新数组中的数据与操作数组中的每一个数据进行一个比较,当出现相等的时候,则不放入新数组中,否则则将数据添加到新数组中。
flag的作用:flag在里面做一个判断的作用,当每次进入大循环的时候,给flag赋一个初始值,为false。然后在当进入小循环的 if 判断中的时候,给flag赋一个布尔的true值,当小循环执行完成之后,进入大循环中的判断,如果此轮操作进入小循环,则flag的值为true,取反的话为false,则if判断里面的代码不执行,即数据不添加到新的数组中,如果此轮操作没有进入小循环,说明没有重复的数据,flag的值为初识值,取反为true;则if判断里面的代码执行,数据会被添加到新的数组中;
在下面的代码中,我将去重的代码进行了函数的封装,以便于以后的调用。
<script>
/*
* @name:去重
* @param:array 一个未经过排序的数组
* @return:array 一个排好顺序的数组
* */
function noRepeat(arr) {
var newArr=[]; //定义一个新的空数组
newArr[0]=arr[0]; //将操作数组中的第一数据赋值给新数组
var flag; //定义一个新变量用来判断是否进入啦小循环,当不进入小循环,
// 说明没有重复的值,则可以直接赋值于新的数组
for(var i=1;i<arr.length;i++){
flag=false; //给flag一个false初始值,每当进入大循环的时候,flag为false;
for(var j=0;j<newArr.length;j++){ //此处进入小循环,进行比较
if(arr[i]===newArr[j]){
flag=true; //之执行啦此段代码,则说明有重复的值,flag被赋予true值,
//那么a操作数组的此项数据则不会进入到新数组
break; //有重复的数据是可以结束进程
}
}
if(!flag){
newArr[newArr.length]=arr[i]; //与数组中的数据不相同数据的会被添加到新数组中
}
}
return newArr;
}
</script>
夜深了,小码农也就写到这里啦,每天学的东西很多,但是如果全部整理写出来的话,估计就得到好晚好晚啦,只能选择一些当天学习的比较重要的而且对于初学者略有些难度的来写,学习之路很漫长,但是会坚持走下去。