1、去重:
法1:使用数组IndexOf去重
法2:使用对象Key:
<script> var arr1 = [1,13,24,11,11,14,1,2]; let unique = function(arr) { let hashTable = {}; let data = []; for(let i=0,l=arr.length;i<l;i++) { alert(!hashTable[arr[i]]); if(!hashTable[arr[i]]) { hashTable[arr[i]] = true; data.push(arr[i]); } } console.log(hashTable); return data; } console.log(unique(arr1)); </script>
2、找出字符串中出现次数最多的字符及显示次数
法1、使用indexOf循环
//var str = "ssraetadsdafaerasssssdajigaf"; var str = "fffffff"; var strr = ""; var ci = 0; var Lastname = ""; var Lastci = 0; var ind = 0; var flag1 = 0; for(var i = 0;i<str.length;i++){ // console.log(str.charAt(i)); // console.log(strr); if(strr.indexOf(str.charAt(i))!=-1){ //alert(strr.indexOf(str.charAt(i))); continue; } //不加这个判断运行166次,加上以后运行38次 v1 : for(var j = 0;j<str.length+1;j++){ var indd = str.indexOf(str.charAt(i),ind); ind = indd+1; flag1++; if(indd == -1){ ci = j; ind = 0; if(ci>=Lastci){ Lastci = ci; Lastname = str.charAt(i); } break v1; } } strr += str.charAt(i); } console.log("运行次数"+flag1); console.log("出现最多的字母"+Lastname); console.log("出现最多的次数"+Lastci); //循环次数为arr.length+1,否则会影响类似ffffff这种字符串的判断。
法2:使用对象key值的方法
//法2:使用对象key值实现 function findMaxDuplicateChar(str) { if(str.length == 1) { return str; } let charObj = {}; for(let i=0;i<str.length;i++) { if(!charObj[str.charAt(i)]) { charObj[str.charAt(i)] = 1; }else{ charObj[str.charAt(i)] += 1; } } let maxChar = '', maxValue = 1; for(var k in charObj) { if(charObj[k] >= maxValue) { maxChar = k; maxValue = charObj[k]; } } return maxChar; }