這是下拉列表框。我想使用javascript刪除重複的「Apple」。使用javascript從下拉列表中刪除重複元素
<select id="Fruits">
<option value="Apple" >Apple</option>
<option value="Orange">Orange</option>
<option value="Mango">Mango</option>
<option value="Apple" >Apple</option>
</select>
這是下拉列表框。我想使用javascript刪除重複的「Apple」。使用javascript從下拉列表中刪除重複元素
<select id="Fruits">
<option value="Apple" >Apple</option>
<option value="Orange">Orange</option>
<option value="Mango">Mango</option>
<option value="Apple" >Apple</option>
</select>
在ES3 POJS可以做到這一點。
的Javascript
function removeDuplicateOptions(selectNode) {
if (typeof selectNode === "string") {
selectNode = document.getElementById(selectNode);
}
var seen = {},
options = [].slice.call(selectNode.options),
length = options.length,
previous,
option,
value,
text,
i;
for (i = 0; i < length; i += 1) {
option = options[i];
value = option.value,
text = option.firstChild.nodeValue;
previous = seen[value];
if (typeof previous === "string" && text === previous) {
selectNode.removeChild(option);
} else {
seen[value] = text;
}
}
}
removeDuplicateOptions("Fruits");
這是@DanDavis參考答案,我將它作爲你知道,公共服務。加上一些格式和一些替代方法來涵蓋類似的用例。
var fruits = document.getElementById("Fruits");
[].slice.call(fruits.options)
.map(function(a){
if(this[a.value]){
fruits.removeChild(a);
} else {
this[a.value]=1;
}
},{});
如果您使用的是選擇一個數據庫(一個很明顯的用例)和值填充工作是ids
和innerText
是你要刪除的重複。然後,而不是你想要的:
[].slice.call(fruits.options)
.map(function(a){
if(this[a.innerText]){
fruits.removeChild(a);
} else {
this[a.innerText]=1;
}
},{});
此外,如果要保留所選的選項試試這個(它可能不是匹配的首次出現。):
[].slice.call(fruits.options)
.map(function(a){
if(this[a.innerText]){
if(!a.selected) fruits.removeChild(a);
} else {
this[a.innerText]=1;
}
},{});
我知道這是舊的,但我想知道是否有一種方法來映射ID和檢查他們每個人? – Brad
@特別是如果您將此作爲問題發佈,我會回答。 (你可能會發現一個類似的問題已經存在。)好像你只需要一個ID的數組作爲字符串和映射,然後返回找到的元素,或者返回null。您可以選擇壓縮數組(使用lo-dash /下劃線等) - 如果您發佈了一個問題,請將其鏈接到此處。 – ocodo
我已經在這裏發佈的問題:http://stackoverflow.com/questions/25562969/remove-multiple-duplicate-options-from-drop-down-list我試着嘲笑一些東西,但我在JavaScript很糟糕。謝謝! – Brad
[] .slice.call (Fruits.options).map(function(a){if(this [a.value]){Fruits.removeChild(a);} else {this [a.value] = 1;}},{}) – dandavis
@ dandavis ...你爲什麼不把這個作爲答案? – Shawn31313
@ Shawn31313 downvote嚇跑了我... – dandavis