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版本的主要内容,如果未能解决你的问题,请参考以下文章