indexof实现数组去重的方法,有三个版本,一个Js版本,2个augular版本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了indexof实现数组去重的方法,有三个版本,一个Js版本,2个augular版本相关的知识,希望对你有一定的参考价值。

先上Js的简化版本的数组去重,需要M层控制数据

大妈

 1 var aa = [1,3,4,5,6,23,523,6,123,‘1‘,12,‘刘‘,‘刘‘,‘刘‘,‘翔‘,12,123,214,‘1‘,‘3‘,‘刘翔‘,‘刘翔‘];
 2         
 3             function arr(arr){
 4                 var result = [];
 5                 for (var i=0;i<arr.length;i++) {
 6                     if (result.indexOf(arr[i]) == -1) {
 7                         result.push(arr[i])
 8                     }
 9                 }
10                 console.log(result);
11             }
12             arr(aa);

再上一个M层控制数据的angular的简化版数组去重

<!DOCTYPE html>
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>自定义数组去重</title>
        
    </head>
    <body>
        <div ng-controller="test"></div>
        <script type="text/javascript" src="angular.min.js" ></script>
        <script>
            var m1 = angular.module(‘myApp‘,[]);
            //创建自定义服务
            m1.factory(‘myRandom‘,function(){
                return{
                    show:function(num1,num2){
                        //1.每次生成一个可重复的(0-num2)的随机数iNow存入长度为num1的数组中
                        var arr = [];
                        for(var i=0;i<num1;i++){
                            var iNow = parseInt(Math.random()*num2);
                            arr.push(iNow);
                        };
                        //2.遍历,去重       arr.indexOf(subString)如果在arr中没找到subString则返回 -1。
                        var result = [];
                        for (var i=0;i<arr.length;i++) {
                            if (result.indexOf(arr[i]) == -1) {
                                result.push(arr[i])
                            }
                        };
                        //3.数组排序
                        result.sort((n1,n2)=>{
                            return n1 - n2;
                        });
                        //4.返还结果
                        return `初始数组:${arr}<br/>去重数组:${result}`;
                    }
                }
            });
            //自定义服务的调用有三个点:1.服务是已经定义好的   2.自定义服务的依赖顺序必须写在系统服务的后面 3.自定义服务起名时不需要加$
            m1.controller(‘test‘,[‘$scope‘,‘myRandom‘,function($scope,myRandom){
                document.write(myRandom.show(20,20));
            }]);    
        </script>
        
    </body>
</html>

最后这个是angular版本的v层控制数组的方法

  1 <!DOCTYPE html>
  2 <html ng-app="myApp">
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>自定义数组去重</title>        
  6     </head>
  7     <body>
  8         <div ng-controller="test">    
  9             
 10             <p>1.随机数组去重</p>
 11             数组长度:<input type="number" type="text" ng-model="num1"/>
 12             取数范围(0,n):<input type="number" type="text" ng-model="num2"/>
 13             <input type="button" ng-click="click()" value="生成数组"/>
 14             <p>获取数组:<span ng-bind="arr"></span></p>
 15             <p>数组去重:<span ng-bind="result"></span></p>
 16             
 17             <hr />
 18             
 19             <p>2.指定数组去重</p>
 20             输入数组:<input type="text" ng-model="str"/>(输入格式:1,1,2,2,3,3,了,了)注意:请使用英文逗号
 21             <input type="button" ng-click="click2()" value="数组去重"/>
 22             <p>数组去重:<span ng-bind="result2"></span></p>
 23         </div>
 24         <script type="text/javascript" src="angular.min.js"></script>
 25         <script>
 26             var m1 = angular.module(‘myApp‘,[]);
 27             //随机数组去重
 28             m1.factory(‘myArr‘,()=>{
 29                 return{
 30                     show:(num1,num2)=>{
 31                         //每次生成一个可重复的(0-num2)的随机数iNow存入长度为num1的数组中
 32                         var arr = [];
 33                         for(var i=0;i<num1;i++){
 34                             var iNow = parseInt(Math.random()*num2);
 35                             arr.push(iNow);
 36                         };
 37                         return arr;
 38                     }
 39                 }
 40             });
 41             m1.factory(‘myResult‘,()=>{
 42                 return{
 43                     //遍历,去重       arr.indexOf(subString)如果在arr中没找到subString则返回 -1。
 44                     norepeat:(arr)=>{
 45                         var result = [];
 46                         for (var i=0;i<arr.length;i++) {
 47                             if (result.indexOf(arr[i]) == -1) {
 48                                 result.push(arr[i])
 49                             }
 50                         };
 51                         //数组排序
 52                         result.sort((n1,n2)=>{
 53                             return n1 - n2;
 54                         })
 55                         return result;
 56                     }
 57                 }
 58             });
 59             //指定数组去重
 60             m1.factory(‘fixArr‘,()=>{
 61                 return{
 62                     remove:(str)=>{                    
 63                             var arr2 = str.split(‘,‘);
 64                             var result = [];
 65                             var a = arr2.length;
 66                             for (var i=0;i<a;i++) {
 67                                 if (result.indexOf(arr2[i]) == -1) {
 68                                     result.push(arr2[i])
 69                                 }
 70                             }
 71                             return result;
 72                     }
 73                 }
 74             });
 75             m1.controller(‘test‘,[‘$scope‘,‘myArr‘,‘myResult‘,‘fixArr‘,($scope,myArr,myResult,fixArr)=>{
 76                 //获取随机数和范围
 77                 $scope.num1 = ‘‘;
 78                 $scope.num2 = ‘‘;    
 79                 //随机数组去重
 80                 $scope.click = ()=>{
 81                     if($scope.num1 == ‘‘ && $scope.num2 == ‘‘){
 82                         $scope.arr = ‘请输入长度和范围‘;
 83                     }else{
 84                         $scope.arr = myArr.show($scope.num1,$scope.num2);
 85                         $scope.result = myResult.norepeat($scope.arr);
 86                     }
 87                 };
 88                 //固定数组去重
 89                 $scope.str = ‘‘;
 90                 $scope.click2 = ()=>{
 91                     if($scope.str == ‘‘){
 92                         $scope.result2 = ‘请输入数组‘;
 93                     }else{
 94                         $scope.result2 = fixArr.remove($scope.str);
 95                     }            
 96                 };
 97             }]);    
 98 
 99         </script>
100         
101     </body>
102 </html>

 

以上是关于indexof实现数组去重的方法,有三个版本,一个Js版本,2个augular版本的主要内容,如果未能解决你的问题,请参考以下文章

数组去重的几个方法

js实现数组去重的方式(7种)

数组去重的多种方法

js数组去重的几种方法

js数组去重的方法

刷题 | 数组去重的4种方法引发的思考