可以说我有一个邮政编码列表。这只是您了解我要问的一个例子。
邮政编码= [53081,53083,54935,53711,54935,53081,57322,53083,53711];
如何仅在数组中循环一次以仅将唯一的邮政编码作为HTML列表输出? (53081,53083,54935,53711,53722)
下面的我的代码从另一个文件打开一个记录集,但不知道有多少个唯一的邮政编码。我将其输出到所有这些位置。
我只想将唯一的邮政编码作为HTML列表输出。
function zips() {
"use strict";
var zipCodeRecords;
var zipCode;
var uniqueZips;
var output;
uniqueZips = "";
// get the HTML output tag to add list
output = document.getElementById("outputDiv");
// open zipcode records
zipCodeRecords = openZipCodeStudyRecordSet();
while(zipCodeRecords.readNextRecord()) {
zipCode = zipCodeRecords.getSampleZipCode();
uniqueZips += "<li>" + zipCode + "</li>";
}
output.innerHTML = uniqueZips;
}
答案 0 :(得分:1)
最快的方法是将每个元素添加为对象中的键。
如果多次定义相同的键,则不会增加键的数量(无重复)
var zipcodes = [53081, 53083, 54935, 53711, 54935, 53081, 57322, 53083, 53711];
var uinque = {};
zipcodes.map(function(z){ uinque[z]=z; });
console.log(Object.keys(uinque));
答案 1 :(得分:0)
您可以通过传递当前项目,索引和数组本身来使用filter()
。然后,仅当当前项目的索引等于当前索引时才返回项目。
var zipcodes = [53081, 53083, 54935, 53711, 54935, 53081, 57322, 53083, 53711];
var res = zipcodes.filter((v, idx, arr) => arr.indexOf(v) === idx);
console.log(res);
答案 2 :(得分:0)
function zips() {
"use strict";
var zipCodeRecords;
var zipCode;
var uniqueZips;
var output;
uniqueZips = "";
// get the HTML output tag to add list
output = document.getElementById("outputDiv");
// open zipcode records
zipCodeRecords = openZipCodeStudyRecordSet();
zipcodesList = [];
while(zipCodeRecords.readNextRecord()) {
zipCode = zipCodeRecords.getSampleZipCode();
if(zipcodesList.indexOf(zipCode )== -1){
zipcodesList [] = zipCode
uniqueZips += "<li>" + zipCode + "</li>";
}
}
output.innerHTML = uniqueZips;
}
//这应该有帮助