亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

javaScript數組或者字符串去重的---三種方法

一,利用indexOf方法

var arr = [ 2,4,5,6,2,4,6,1,7,8,5,6 ];
var temp=[];
function  cancelRepeat (arr) { 
        for (var i = 0; i<arr.length ; i++) {
//如果temp中没有arr[i],则把它加入到temp中
           if ( temp.indexOf( arr[i] ) === -1 ) {
                  temp.push(arr[i]);
               }
        }
}
cancelRepeat( arr );
console.log(temp);
[2, 4, 5, 6, 1, 7, 8]

二,利用for循环嵌套和for循环里的if判断,然后封装成function函数, 这种效率低,但是符合大多数人的思路: 设置一个数组容器,和一个标记。把数组arr中的转移到temp数组中,如果temp中有这个元素就把标志设置为true,然后break掉。

var arr = [ 2,4,5,6,2,4,6,1,7,8,5,6 ];
var  temp = [] , isRepeated ;
function  cancelRepeat (arr) {
     for (var i =0; i< arr.length; i++) {
                  isRepeated = false;
                  for ( var j = 0; j < temp.length;  j++) {
                        if ( arr[i] === temp[j] ) {
                            isRepeated = true;
                           break;
                            }
                    }
                 if ( !isRepeated ) {
                       temp.push( arr[i] );
                       } 
           }
}
cancelRepeat(arr);
console.log(temp);
[2, 4, 5, 6, 1, 7, 8]

第二种方法的改进型
我们可以用一个哈希表(hashtable)的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的,改进如下:

 var arr = [ 2,4,5,6,2,4,6,1,7,8,5,6 ];
 var result = [], hash = {};   
 function cancelRepeat (arr) {  
       for (var i = 0, elem;  (elem = arr[i])  !=  null ;  i++) { 
             if (!hash[elem]) {
             result.push(elem); 
             hash[elem] = true;
              }
         } 
} 
cancelRepeat(arr);
console.log(result); 
[2, 4, 5, 6, 1, 7, 8]

查找字符串中出现次数最多的字符,并且统计次数

function acount (str){
  // 转换为数组
  let arr = str.split("")
  // 定义一个容器
  let temp = {}
  for(let i in arr){
       if(temp[arr[i]]){ // 如果temp中存在的话,就temp[arr[i]] 的值加1
           temp[arr[i]] +=1
       }else{         // 如果temp中存在的话,就temp[arr[i]] 的值等于1
            temp[arr[i]] = 1
       }
 }
 let num  =0;
 let member = "";
 for(let j in temp){
 if(temp[j] >= num){
       num = temp[j]
       member = j
   }
 } 
 console.log(`出现次数最多的是:${member},共出现${num}次`)
}
acount("xingjizhengba")

这个解决方法是有问题的,这个方法只能解决某一个出现次数最多的字符,因为如果有多个出现相同次数的字符,那么只能检查到最早出现的那个。

點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消