从 javascript 中的数组构建 select 选项的唯一列表?
building unique list of select options from array in javascript?
我写了这个脚本,
<script>
const http = new XMLHttpRequest()
url = "http://192.168.0.2/hotspots";
window.onload = function(){
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
result = eval(this.responseText)
select = document.getElementById('access_points_select');
for (var i = 0; i<=result.length; i++){
var opt = document.createElement('option');
opt.value = result[i];
opt.innerHTML = result[i];
select.appendChild(opt);
}
}
};
request.open('GET', url);
request.send();
}
</script>
</head>
<body>
<select name="access_points" id="access_points_select">
</select>
但是因为资源也 returns 重复,我想避免在 select 下拉列表中重复输入,我如何在不创建唯一数组的情况下实现这一点,而不创建另一个数组然后 result
。
如果 eval(this.responseText)
returns 一个数组,你可以使用 Set 来确保没有重复。
如果你需要过滤 undefined
你也可以在最后做链式过滤:
result = [...new Set(this.responseText)].filter(Boolean)
我写了这个脚本,
<script>
const http = new XMLHttpRequest()
url = "http://192.168.0.2/hotspots";
window.onload = function(){
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
result = eval(this.responseText)
select = document.getElementById('access_points_select');
for (var i = 0; i<=result.length; i++){
var opt = document.createElement('option');
opt.value = result[i];
opt.innerHTML = result[i];
select.appendChild(opt);
}
}
};
request.open('GET', url);
request.send();
}
</script>
</head>
<body>
<select name="access_points" id="access_points_select">
</select>
但是因为资源也 returns 重复,我想避免在 select 下拉列表中重复输入,我如何在不创建唯一数组的情况下实现这一点,而不创建另一个数组然后 result
。
如果 eval(this.responseText)
returns 一个数组,你可以使用 Set 来确保没有重复。
如果你需要过滤 undefined
你也可以在最后做链式过滤:
result = [...new Set(this.responseText)].filter(Boolean)