создание уникального списка опций выбора из массива в javascript? - PullRequest
0 голосов
/ 29 мая 2020

Я написал этот скрипт,

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

, но поскольку ресурс также возвращает дубликаты, я хочу избежать дублирования записей в раскрывающемся списке выбора, как я могу добиться этого, не создавая уникальный массив без создание другого массива, затем result.

1 Ответ

0 голосов
/ 29 мая 2020

Если eval(this.responseText) возвращает массив, вы можете использовать Set , чтобы гарантировать отсутствие дубликатов.

Если вам нужно отфильтровать undefined, вы можете сделать цепочку, которая в конце тоже:

 result = [...new Set(this.responseText)].filter(Boolean)
...