Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用纯JavaScript删除数组中不包含值的选项_Javascript_Arrays_Drop Down Menu - Fatal编程技术网

使用纯JavaScript删除数组中不包含值的选项

使用纯JavaScript删除数组中不包含值的选项,javascript,arrays,drop-down-menu,Javascript,Arrays,Drop Down Menu,我需要从下拉列表中删除不包含在数组中的选项。这就是我所尝试的: var states_served = ["Connecticut", "Delaware", "Maine", "Maryland", "Massachusetts", "New Hampshire", "New Jersey", "New York", "North Carolina", "Pennsylvania", "Rhode Island", "Vermont", "Virginia", "West Virginia"]

我需要从下拉列表中删除不包含在数组中的选项。这就是我所尝试的:

var states_served = ["Connecticut", "Delaware", "Maine", "Maryland", "Massachusetts", "New Hampshire", "New Jersey", "New York", "North Carolina", "Pennsylvania", "Rhode Island", "Vermont", "Virginia", "West Virginia"];

var statesDD = document.querySelector('select[title="State"]');

 for (i = 0; i < statesDD.options.length; i++) {
  console.log(states_served.includes(statesDD.options[i].value)); //Correctly finds false and true options
     if (states_served.includes(statesDD.options[i].value) === false) {
       statesDD.remove(i);
       }

     }

我做错了什么?谢谢。

我相信您当前的问题是,当您根据数组元素的初始位置I删除它们时,您没有考虑从数组中删除它们的事实。因此,相对于最终数组,我将不是一个正确的迭代器

避免这种情况的一种方法是避免自己管理索引:

var statesDD = document.querySelector('select[title="State"]')
  .filter((state) => !(states_served.includes(state.options[i].value)));
您可以将所服务的状态转换为一个集合,以便在使用筛选器之前,集合上包含的等效操作has为O1而不是on:

这将过滤所有假值,只保留你在问题中提出的真值。如果你想要相反的值,只需添加一个

改用。
var statesDD = document.querySelector('select[title="State"]')
  .filter((state) => !(states_served.includes(state.options[i].value)));
const states_served = new Set(["Connecticut", "Delaware", "Maine", "Maryland", "Massachusetts", "New Hampshire", "New Jersey", "New York", "North Carolina", "Pennsylvania", "Rhode Island", "Vermont", "Virginia", "West Virginia"]); 

let statesDD = document.querySelector('select[title="State"]')
                       .filter(state => states_served.has(state.options[i].value));