JS---移除或查找数组中重复出现的元素

题目一:移除数组中给定的元素
JS---移除或查找数组中重复出现的元素_第1张图片
思路:
因为题目上要求在给定的arr数组上进行操作,所以,我们部门创建新的数组来装移除元素后的其他元素,我们可以找其他的方法,这里我用的splice方法,我们点出来后可以看到:splice(Start:number,deleteCount?:number),即从Start:number起,删除deleteCount?:number个元素,看到这里我们就会有思路了!首先遍历数组,判断与给定相等的元素的时候,从i处删除一个元素,这样后面的元素就会跑到前面,我们就可以再删除与给定相等的元素,就可以在原数组上操作,移除与给定相等的元素后,得到其他的元素的数组!

代码展示:

 function f1(item){
     
        let arr=[1,2,2,3,4,2,2]
        for (let i = 0; i < arr.length; i++) {
     
            if (item==arr[i]){
     
                arr.splice(i,1)     //splice(Start:number,deleteCount?:number)
                i--;        //因为每次删除一个元素后,后面的元素的下标就会-1,但是我们查找的时候,循环让i+1,所以我们只能会找到下一个元素的下标
                            //例如,当我们删除第二个元素后,后面的元素,即原始数组的第三个元素就会变为第二个,我们这时i变为了3,就不会再与改变后的数组第二个元素比较,导致这个元素不会被移除
            }
        }
        for (let a of arr) {
     
            console.log(a);     //遍历数组
        }
    }
    f1(2)

题目二:.查找数组中重复出现的元素
JS---移除或查找数组中重复出现的元素_第2张图片
思路:首先我们要查找出去重后的元素数组,将去重后的数组,再次遍历,拿出来每个元素与初始数组进行比较,如果相等,就将该元素的次数+1,比较完,我们就可以得到所有的元素与去重后数组比较后的相等的次数,如果次数大于1,就说明该元素在原始数组中存在的不止一次,就将这个元素输出!

代码展示:

<script>
	//去重
    let arr=[1,2,4,4,3,3,1,5,3];
    let removal=new Array(arr.length)
    for (let i = 0; i < arr.length; i++) {
     	
        let flag = false
        for (let n of removal) {
     
            if (n == arr[i]) {
     
                flag = true		//如果相等,变为true
                break
            }
        }
        if (!flag) {
     
            removal.push(arr[i])   //将去重的结果重新装进一个数组中
        }
    }

    for (let n of removal) {
            //遍历去重的数组
        count(n);         //调用函数,并将去重的数组中的元素作为参数传给函数
    }

    function count(x) {
        //创建一个函数
        let count=0;    //定义一个累加的次数
        for (let a of arr) {
         //遍历初始的数组
            if(a==x){
            //如果去重的数等于初始的数组中的元素,就将该数次数+1
                count++;
            }
        }
        if(count>1){
             //判断如果每个数的累加次数大于1时,说明该数在数组中是存在重复的
            console.log(x);     //输出
        }
    }
</script>

你可能感兴趣的:(js,js,算法,javascript)