2013-05-30 69 views
0

在二維數組重複數據的數量有一個數據如下:我如何跟蹤在柔性

Chennai 11 10 
Mumbai 12 20 
Mumbai 22 40 
Calcutta 4 35 
Calcutta 3 50 
Chennai 13 45 
Calcutta 4 55 
Mumbai 5 50 

我需要一個數組賦予金奈:2孟買:3加爾各答:3。

如何得到它?

+1

你嘗試過什麼?什麼是你的底層ActionScript結構?你是使用Struct還是一個數組Array?據我所知,沒有簡單的函數來解析數組並查找重複項。 – JeffryHouser

+0

@ Reboog711上述數據是2D數組,我需要重複計數。 – Flexiflex

回答

1

循環數據;並將其保存爲關聯數組。我會用字典。從概念上講,這樣的:

var dict :Dictionary = new Dictionary(); 

for (var x:int; x<your2DArray.length;x++){ 
    var stringToExamine :String = your2DArray[x][1]; 
    if(dict.hasOwnProperty(stringToExamine)){ 
    dict[stringToExamine] ++; 
    } else { 
    dict[stringToExamine] = 1; 
    } 
} 

現在你說你想這是一個數組,所以你必須要Dictionary對象轉換爲數組莫名其妙。推測是另一個二維陣列。

var newArray :Array = new Array(); 
var counter :int = 0; 
for each (var key :String in dict) 
{ 
    newArray[counter] = [key,dict[key]]; 
    counter++; 
} 

我在瀏覽器中寫了這段代碼;所以它可能有問題。但是,算法應該是穩定的。

+0

你可以在沒有使用字典概念的情況下幫助我嗎?我嘗試了上面的代碼,但無法獲得輸出結果,也不熟悉字典概念。 – Flexiflex

+0

閱讀關於詞典這裏:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Dictionary.html和聯想陣列:http://help.adobe.com/en_US/as3 /dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7eea.html。我看不到一個簡單的方法來完成你的任務,而不使用字典。 – JeffryHouser

+0

我需要詳細瞭解字典的概念。我把這些文檔和搜索的例子,但沒有找到太多可以理解的。感謝上述答案。我一定會了解上述概念。 – Flexiflex

0

第一步是從二維數組的第一列開始構建一維數組(下面的例子中爲「arr」)。 第二步是形成另一個新的單維數組去除重複項(下面例子中的「重複項」)。 第三步是在比較兩個數組數據時遞增一個整數變量,如下所示,最後將整數變量推送到另一個新數組中。

讓我有以下陣列:

private var arr:Array = new Array('Chennai', 
       'Mumbai', 
       'Mumbai', 
       'Calcutta', 
       'Calcutta', 
       'Chennai', 
       'Calcutta', 
       'Mumbai', 
       'Kerala', 
       'Kerala', 
       'Kerala', 
       'Kerala', 
       'US'); 

private var dupe:Array = new Array('Chennai', 
      'Mumbai', 
      'Calcutta', 
            'Kerala', 
      'US'); 

var aNewArr:Array = new Array(new Array()); 
var repeatedFinalArray:Array = new Array(); 

for(var a:int=0; a<dupe.length;a++) 
{ 
var count:int=0; 
for(var j:int=0;j<arr.length;j++) 
{ 
    if(dupe[a]==arr[j]) 
    { 
    count++; 
    } 
} 
aNewArr.push([dupe[a]],[count]); 
repeatedFinalArray.push(count); 
    } 

The output of aNewArr will have: 
Chennai,2,Mumbai,3,Calcutta,3,Kerala,4,US,1 
and 
repeatedFinalArray will have jus the counts : 2,3,3,4,1