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>
时间: 2024-10-12 13:18:25

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

js 数组去重的方法总结

想沉淀一下自己.代码改变世界~~~ 1.利用Array.from代码如下 1 var arr = [1,2,3,4,3,2,1] 2 function unique(arr){ 3 return Array.from(new Set(arr)) 4 } 5 console.log(unique(arr)) 2.利用es6(...)拓展运算符.demo 1 var arr = [1,2,3,4,3,2,1] 2 function unique(arr){ 3 return [...new Set(

数组去重的方法总结

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数组去重的 3种方法</title> </head> <body> <script type="text/javascript"> var demoAr = [3,4,5,5,7,2,1,4,3]; /

5个数组去重的方法

1.遍历数组法 最简单的去重方法:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码 function unique1(array){ var n = []; for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面 if (n.indexOf(arra

几种数组去重的方法

<script type="text/javascript">window.onload=function(){ /*数组去重方法一*//*var arr=[1,1,2,545,5,15,156,1,5,15]; var arr1=[]; for(var i=0;i<arr.length;i++){ if(arr1.indexOf(arr[i])==-1){ arr1.push(arr[i]); }; }; alert(arr1); */ /*数组去重方法二*//*

数组去重--ES6方法

数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, 5] ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (l

JS数组去重 ES6 方法

let arr = [0, 0, 0, 0, 1, 2, 3, 4, 4, 5, 2, 3, 3, 3, 9, 8, 9]; //数组去重法1 console.log(Array.from(new Set(arr))); //数组去重法2 console.log(...new Set(arr)); //数组去重法3 let newarr = []; for (var i = 0; i < arr.length; i++) { if (newarr.indexOf(arr[i]) == -1) {

js数组去重的方法

1.如果不借助任何方法,初级写法应该是: function unique(arr){ var res=[]; for(var i=0,len=arr.length;i<len;i++){ var obj = arr[i]; for(var j=0,jlen = res.length;j<jlen;j++){ if(res[j]===obj) break; } if(jlen===j)res.push(obj); } return res; } var arr=[1,1,'2','1',3,4]

数组去重的方法

思路一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len-1; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(ar

JavaScript 几种数组去重的方法

一.利用for嵌套for,然后splice去重 let arr=[5,5,5,12,12,-3,33,33,35,8]; for( let i=0; i<arr.length;i++){ for(let k=i+1;k<arr.length;k++){ if(arr[i]===arr[k]){ arr.splice(i,1); i--; } }} console.log(arr) 二.Set方法去重 let arr = [1,2,2,3,4,3,1,6,7,3,5,7]; let s1 = n