2014-04-16 29 views
0

這是我第一次來這裏,所以原諒我,如果這個答案很明顯 - 但無法在任何地方找到可能的解決方案。如何在一個調查中的地名數組中找到相同的字符串

我試圖從我想設置的調查中抽出數字,這將生成城市列表。因此:

var cities = array ['city1', 'city2', 'city3', 'city2', 'city4', 'city1', city2']; 

會生成一個列表:city1:2,城2:3,請分享幫助:1,city4:1

有沒有辦法去通過在Javascript中這樣的陣列?這些城市將不會被預先確定 - 即人們可能會輸入任何東西。

預先感謝任何幫助,您可以給我。

tim

回答

1

答案是「明顯」......如果你知道從哪裏開始。因此,這裏的起跑線上:

  • 通過數組創建一個對象(文字,{}
  • 迭代。對於每個項目:
    • 如果該項目不作爲對象的鍵存在,由1

並創建具有值0

  • 增量在物體上的密鑰的密鑰。 ..完成!這裏的所有都是它的。

  • 2

    像Niet已經回答: 你通過列表​​並將鍵放入一個對象,並增加值。

    var generatedList = {}; 
    for(var i=0;i<cities.length;i++){ 
        if(generatedList[cities[i]]){ 
         generatedList[cities[i]]++; 
        }else{ 
         generatedList[cities[i]] = 1; 
        } 
    } 
    
    +0

    這個答案是現貨上,但我已經開始了我的jsfiddle嘗試如此張貼反正。 +1給你,雖然:) – Askanison4

    +1

    注意:如果城市名稱中有一個空格或怪異字符,您只能使用數組表示法,即'generatedList ['New York']'而不是普通的對象屬性表示法來訪問它,即'generatedList.London' – Populus

    1

    自從我開始演示以來,這已經得到了解答,但這應該可以幫助您瞭解發生了什麼。打開此演示與開發者控制檯打開查看輸出:

    http://jsfiddle.net/46wnj/

    var cities = new Array('city1', 'city2', 'city3', 'city2', 'city4', 'city1', 'city2'); 
    
    var citiesObject = {}; 
    
    for (var x = 0; x < cities.length; x++) 
    { 
        if (citiesObject[cities[x]]) 
        { 
         citiesObject[cities[x]]++ 
        } 
        else 
        { 
         citiesObject[cities[x]] = 1; 
        } 
    } 
    
    相關問題