Jquery 如何将新选项附加到select元素,但在声明时保持新选项项的顺序
我想在用户单击按钮时更改select元素的所有选项。 但是,附加在select标记中的新数据不遵循其在newOptions变量中的顺序。它将所有键以0开头的值放在列表的底部,尽管它们被声明并且应该在顶部。如何解决此问题 期望值:Jquery 如何将新选项附加到select元素,但在声明时保持新选项项的顺序,jquery,Jquery,我想在用户单击按钮时更改select元素的所有选项。 但是,附加在select标记中的新数据不遵循其在newOptions变量中的顺序。它将所有键以0开头的值放在列表的底部,尽管它们被声明并且应该在顶部。如何解决此问题 期望值: <select name="car" id="car"> <option value="0">00</option> <option value="5">05</option> <
<select name="car" id="car">
<option value="0">00</option>
<option value="5">05</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
</select>
00
05
15
30
45
得到了
<select name="car" id="car">
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
<option value="0">00</option>
<option value="5">05</option>
</select>
15
30
45
00
05
函数更改(){
$(“#车”).empty();
新选项={
"00": 0,
"05": 5,
"15": 15,
"30": 30,
"45": 45
}
for(对象条目的常数[k,v](新选项)){
$(“#car”).append($(“”).attr(“value”,v).text(k));
}
}
丰田
宝马
本田
在Object.entries之后应用排序功能
function change() {
$("#car").empty();
newOptions = {
"00": 0,
"05": 5,
"15": 15,
"30": 30,
"45": 45
}
for (const [k, v] of Object.entries(newOptions).sort(function(a, b) {return a - b;})) {
$("#car").append($("<option></option>").attr("value",v).text(k));
}
}
函数更改(){
$(“#车”).empty();
新选项={
"00": 0,
"05": 5,
"15": 15,
"30": 30,
"45": 45
}
for(Object.entries(newOptions.sort)的常量[k,v](函数(a,b){返回a-b;})){
$(“#car”).append($(“”).attr(“value”,v).text(k));
}
}
这是一个完美的例子,说明为什么在顺序很重要的情况下不应使用对象。对象将始终首先排序其整数键(15
、30
和45
)。考虑一下<代码> map <代码>或<代码>数组< /代码>。