从 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)