从Javascript数组中创建一个没有重复项的HTML下拉列表
Create an HTML Dropdown From a Javascript Array Without Duplicates
使用先前回答的SO问题作为参考,我创建了一个函数,该函数从现有的javascript数组中填充HTML文档中的下拉列表。
HTML:
<fieldset>
<legend>Choose action</legend>
<p>Choose your action and click next</p><br />
<select id="trigger"></select>
</fieldset>
Javascript:
var guns =
[
["Smith and Wesson 500", "Revolver", "Full Frame", 50, "sada"], //model, type, frame, cal, trigger
["Glock 19", "Semi", "Compact", 9, "striker"],
["Smith and Wesson M and P Shield 9", "Semi", "Compact", 9, "striker"],
["Ruger Alaskan", "Revolver", "Full Frame", 44, "dao"],
["Ruger SR9", "Semi", "Compact", 9, "striker"],
["Desert Eagle", "Semi", "Full Frame", 50, "sada"],
["Smith and Wesson M and P Shield 40", "Semi", "Compact", 40, "striker"]
]
var triggerDropdown = function(){
var sel = document.getElementById('trigger');
for (var i = 0; i < guns.length; i++) {
var opt = document.createElement('option');
opt.innerHTML = guns[i][4];
opt.value = guns[i][4];
sel.appendChild(opt);
}
};
我挑战:填充trigger
,不复制。此外,解决方案一定不需要我永久地改变guns
(我发现了其他一些有用的SO帖子,但其中大多数涉及首先从数组中删除重复项…在本例中,我没有这个选项)。
谢谢!
您可以使用触发器创建一个单独的数组:
var triggers = function(guns) {
var unique = {};
return guns.reduce(function(current, item) {
if (!(item[4] in unique)) {
current.push(item[4]);
unique[item[4]] = 1;
}
return current;
}, []);
}(guns);
然后按常规遍历triggers
。
参见:Array.reduce()
在构建列表时,要在本地跟踪已经使用过的键:
var triggerDropdown = function(){
var already = {};
var sel = document.getElementById('trigger');
for (var i = 0; i < guns.length; i++)
{
var val = guns[i][4];
if (! already[val])
{
var opt = document.createElement('option');
opt.innerHTML = val;
opt.value = val;
sel.appendChild(opt);
already[val] = true;
}
}
};
相关文章:
- javascript和html图像下拉列表
- 如何在 HTML 下拉列表中制作锚标记
- 数据和HTML下拉列表
- 在html中显示任一下拉列表
- 在Moqui中,如何在html.ftl中加载数据库表数据作为下拉列表
- 需要在 html 中使用两个下拉列表来显示不同的 json 值
- HTML 表单字段根据从下拉列表中选择的选项显示/隐藏
- HTML 下拉列表所选值
- 只有在HTML表单中选择了某个下拉列表时,才需要字段
- html形式的下拉列表
- 有角度的自动建议文本排版和html ul li下拉列表
- 如何根据HTML下拉列表中的数量选择来计算价格
- 从php中的mysql中复制带有嵌入式下拉列表的html表单javascript
- JS下拉列表没有'不能在复制的HTML源中工作
- 从 html.append 追加的 html 下拉列表中获取返回值
- 在选择其他下拉列表html和javascript araray的基础上,填充3个连续的下拉列表
- 使用 SQL 信息更新选择下拉列表 (HTML)
- 层次结构和多选项下拉列表(HTML),并在项目之间导航(子节点)
- 显示选项与复选框下拉列表- HTML/JAVASCRIPT
- Chrome中的AJAX下拉列表(HTML Select)