js数组去重,以后慢慢补充

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
       let arr=[1,2,3,6,5,6,5,6,56,10]
    //    选择排序法
    //    function arrpick1(arr) {
    //        for(let i=0;i<arr.length;i++){
    //            for(let j=i+1;j<arr.length;j++){
    //                if(arr[i]==arr[j]){
    //                    arr.splice(j,1)
    //                    j--
    //                }
    //            }
    //        }
    //        return arr
    //    }
    //    console.log(arrpick1(arr))
         
        // indexOf
        // function arrpick(arr) {
        //     // 判断是不是数组
        //     if(!Array.isArray(arr)){
        //         console.log("error")
        //         return
        //     }
        //     else
        //     var newarr=[];
        //     for(let i=0;i<arr.length;i++){
        //         if(arr.indexOf(arr[i]===-1)){
        //           newarr.push(arr[i])
        //         }
        //     }
        //     return arr
            
        // }
        // console.log(arrpick(arr))


        // sort()
        debugger
        function sortarr(arr){
            if(!Array.isArray(arr)){
                console.log("error")
                return
            }
            else
            arr.sort();
            let newarr=[arr[0]];
           
            for(let i=1;i<arr.length;i++){
                if(arr[i]!==arr[i-1]){
                    newarr.push(arr[i])

                }
            }
           return newarr

        }
        console.log(sortarr(arr))
        
    </script>
</body>
</html>

1.排序法
思路:通过两层for循环,通过内层循环逐个的与外层循环比较,相等用splice方法删除掉内层循环那个数。内层循环自减1
2.indexOf
indexOf判断有无相同的数,有返回第一个索引值,无返回-1
函数内建立一个空数组,通过判断arr[i]是否为-1;为-1表示不同,push该值入新数组。(首先通过isArray判断是否为数组)
3.sort
先sort数组,从小到大排列。建立一个只有第一个值的数组newarr=[arr[0]],
通过循环比较arr[i]是否等于arr[i-1],不等push(首先要判断是否为数组)
4.不使用API

  function pickarr(arr){
			var result = [];
			for(var i = 0;i < arr.length;i++){
				for(var j = 0;j < result.length;j++){
					if(result[j] == arr[i]){
						break;
					}
				}
				if(result.length == j){
					// 将arr中当前元素,追加到result末尾
					result[result.length] = arr[i];
				}					
			}
			return result;
		}

        console.log(pickarr(arr))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值