gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:36:25 24 4
gpt4 key购买 nike

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

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);
}

}

如果我尝试相反的 if (states_served.includes(statesDD.options[i].value)),只是为了测试,t 会删除 true ,但我需要删除那些 false。我也试过:

if (states_served.includes(statesDD.options[i].value) == false)...
if (states_served.includes(statesDD.options[i].value) !== true)...
if (!states_served.includes(statesDD.options[i].value))...

我做错了什么?谢谢。

最佳答案

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

避免这种情况的一种方法是使用 Array.filter避免必须自己管理索引:

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

关于javascript - 使用纯 JavaScript 删除值不包含在数组中的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56067174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com