2012-11-29 41 views
0

我遇到以下問題,我將不勝感激。假設我們有以下的(N×3)陣列:二維數組中的字符串組行

["Skyfall", "Monday", "21:00", 
"Batman Rises", "Wednesday", "22:30", 
"Skyfall", "Tuesday", "23:00", 
"The Avengers", "Thursday", "22:45", 
"Skyfall", "Monday", "21:00" 
"Batman Rises", "Wednesday", "22:30", 
"Batman Rises", "Wednesday", "22:00", 
    .   .   . 
    .   .   . 
    .   .   .] 

每一行由三根弦表示。我想按照以下方式實現一種將常見行分組的算法。 算法啓動時,首先檢查二維數組第一列中的所有值。然後,如果它在那裏找到相同的值,則繼續第二列,但它只檢查第一步中具有相同值的行。之後,它繼續以同樣動機的第三列。最後,它給出了通過上述過程找到的行。 例如,對於給定的陣列的輸出應爲:

[ 「007:大破天幕殺機」, 「星期一」, 「21:00」,
「蝙蝠俠升起」, 「星期三」, 「22:30」]

你知道我該怎麼做嗎? 非常感謝!

+3

這不是一個2-d陣列。 –

+1

[你有什麼嘗試?](http://www.whathaveyoutried.com) –

+0

其實我不知道我該怎麼做。我想我可以使用一個類,有一個方法在二維數組中找到重複的行..是否有這樣的類? – Stanos

回答

0
  • 創建一個Movie類,有三個成員:movieNamedaytime
  • 把每部電影在一組,並檢查它是否是重複的,在這種情況下,將其添加到副本的列表:
if (!set.add(movie)) { //duplicate 
    listOfDuplicates.add(movie); 
} 

之後,隨意把結果返回到一個數組,如果你喜歡。

-1

以下是一張關於如何實現它 - http://jsfiddle.net/Pqkxz/1/

我通過對象必須循環兩次,一次審查每一個對象和一個第二次測試重複。下面是我用於測試重複的代碼:

function checkForDuplicate(title, row){ 
var dup = false; 
var index = 0; 
for (var movie in TheaterListing) { 
    var obj = TheaterListing[movie]; 
    for (var prop in obj){ 
     if(prop == "Title" && index != row){ //if not current row 
      if (obj[prop] == title) dup = true;    
     } 
    } 
    index++; 
} 
return dup; 

}

+0

這是用Java而不是Javascript問的。即使它們是相似的,它仍然應該使用相同的語言。 – dragonbanshee