2010-12-15 179 views
0

我需要對數據集進行排序,您可以看到我已將其分配給記錄變量。從這些數據我需要看看郵政編碼是否存在。如果郵政編碼不存在,那麼我需要將它移動到數組中(當然會有重複),並繼續檢查其餘記錄,如果它存在,我不需要做任何事情。在JavaScript中搜索數組

// Declare Array 
var numbersArray = []; 

// Variables 
var records; 
var zipCode; 
var numbers; 
var index; 
var output; 
var outputMessageOne; 
var outputMessageTwo; 
var count = 0; 

output = document.getElementById('outputDiv'); 
records = openZipCodeStudyRecordSet(); 

output.innerHTML = "The unique zip codes are: "; 

while (records.readNextRecord()) { 

    zipCode = records.getSampleZipCode(); 

    for (index = 0; index < numbersArray.length; index++) { 
     if (zipCode === numbersArray[index]) { 
      var uniqueZip = false; 
      break; 
      records++; 
     } 

     if (zipCode !== numbersArray[index]) { 
      numbersArray.push(zipCode); 
     } 
    } 
    output.innerHTML += numbersArray; 
} 

}

+0

執行for循環時'numbersArray'爲空,就我所見。因此,'index Stephen 2010-12-15 22:56:05

回答

2

您可以簡化您的for循環,像這樣:

matchedZip = false; 

for(i in numbersArray) { 
    if (numbersArray[i] === zipCode) { 
     matchedZip = true; 
    } 
} 

if (! matchedZip) { 
    numbersArray.push(zipCode); 
} 

它插入你的while循環。如果將數組推入for循環中,則每次沒有匹配時都會推送每個郵政編碼。

+0

感謝這一點完美的修改,以適應我的需求。 – TheStandardRGB 2010-12-15 23:13:08

+0

'for-in'不適用於循環數組。更多:[*對於JavaScript中的每個數組?](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript) – 2017-04-13 05:17:29

0

嗯,你並沒有完全問一個問題,但無論如何,我會回答:)答案是,你不應該用正常的數組這一點,而是一個地圖或關聯數組。幸運的是普通的JavaScript對象,可用於本:

var numbers = {}; 

// Variables 
var records; 
var numbers; 
var index; 
var output; 
var outputMessageOne; 
var outputMessageTwo; 
var count = 0; 

output = document.getElementById('outputDiv'); 
records = openZipCodeStudyRecordSet(); 

output.innerHTML = "The unique zip codes are: "; 

while (records.readNextRecord()) { 

    var zipCode = records.getSampleZipCode(); 
    numbers[zipCode] = 1; // just picking an arbitrary value 
} 

for (var zipCode: numbers) { 
    output.innerHTML += zip + " "; 
} 

的原因是,這樣一來你不通過現有的數據需要循環爲每個新的輸入。