2010-12-15 100 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 + " "; 
} 

的原因是,这样一来你不通过现有的数据需要循环为每个新的输入。