Javascript 删除html选择选项中的重复值和组合

Javascript 删除html选择选项中的重复值和组合,javascript,jquery,Javascript,Jquery,我有一个动态生成的字段,带有 假的 真的 假假 假真 真的 千真万确 我想删除重复出现和组合。带有的最后一个字段应如下所示: <select> <option value=""></option> <option value="">False</option> <option value="">True</option> </select> 假的 真的 这是我儿子的长

我有一个动态生成的
字段,带有


假的
真的
假假
假真
真的
千真万确
我想删除重复出现和组合。带有
的最后一个
字段应如下所示:

<select>
    <option value=""></option>
    <option value="">False</option>
    <option value="">True</option>
</select>

假的
真的
这是我儿子的长相。几个小时来一直在试图解决这个问题

var values = [];

$("select").children().each(function() {
  if (values.length > 0) {
    var notExists = false;
    for (var x = 0; x < values.length; x++) {
      var _text = this.text.replace(/\s/g, "");
      var value = values[x].replace(/\s/g, "");

      if (values[x].length > _text.length) {
        //console.log('>>+', value, ' || ', _text, value.indexOf(_text))
        notExists = value.indexOf(_text) > -1 ? true : false;
      } else {
        //console.log('>>*', value, ' || ', _text, _text.indexOf(value))
        notExists = _text.indexOf(value) > -1 ? true : false;
      }
    }
    if (notExists) {
      //this.remove();
      values.push(this.text);
    }
  } else {
    values.push(this.text);
  }
});
var值=[];
$(“选择”).children().each(函数()){
如果(value.length>0){
var notExists=false;
对于(var x=0;x\u text.length){
//console.log('>>+',值,'| |',_text,value.indexOf(_text))
notExists=value.indexOf(_text)>-1?true:false;
}否则{
//console.log(“>>*”,值“| |”,_text,_text.indexOf(值))
notExists=\u text.indexOf(value)>-1?true:false;
}
}
如果(notExists){
//这个。删除();
value.push(this.text);
}
}否则{
value.push(this.text);
}
});
非常感谢您提供的任何帮助。

您可以使用
map()
返回所有选项文本,并在空白处使用
split()
。然后,要删除重复项,可以使用
reduce()
返回对象。然后可以清空
选择
,并使用
Object.keys()
循环每个属性并附加到
选择

var opt=$(“选择选项”).map(函数(){
返回$(this).text().split(“”)
}).get();
opt=opt.reduce(函数(o,e){返回o[e]=true,o},{});
$('select').empty();
Object.keys(opt.forEach)函数(key){
$('select')。追加(''+key+'');
});

假的
真的
假假
假真
真的
千真万确
您可以使用
map()
返回所有选项文本,并在空白处使用
split()
。然后,要删除重复项,可以使用
reduce()
返回对象。然后可以清空
选择
,并使用
Object.keys()
循环每个属性并附加到
选择

var opt=$(“选择选项”).map(函数(){
返回$(this).text().split(“”)
}).get();
opt=opt.reduce(函数(o,e){返回o[e]=true,o},{});
$('select').empty();
Object.keys(opt.forEach)函数(key){
$('select')。追加(''+key+'');
});

假的
真的
假假
假真
真的
千真万确

您可以循环浏览每个子文本,然后使用获取第一个文本并将其放入数组中

完成后,选择元素并附加新创建的选项

var _textHolder=[]; // NA empty array to hold unique text
var _options="";
$("select").children().each(function(item,value) {
  var _textVal = $(this).text().trim(); // Remove white space
  //get the first text content
  var _getText = _textVal.substr(0, _textVal.indexOf(" "));
  // if this text is not present in array then push it   
  if(_textHolder.indexOf(_getText) ==-1){
       _textHolder.push(_getText)
      }
   });
   // Create new options with items from _textHolder
  _textHolder.forEach(function(item){
  _options+='<option value="">'+item+'</option>'
 })
// Empty current select element and append new options
   $('select').empty().append(_options);
var[u textHolder=[];//一个空数组来保存唯一的文本
var_options=“”;
$(“选择”).children().each(函数(项、值){
var _textVal=$(this).text().trim();//删除空白
//获取第一个文本内容
var_getText=_textVal.substr(0,_textVal.indexOf(“”);
//如果此文本不在数组中,则按此按钮
if(_textHolder.indexOf(_getText)=-1){
_textHolder.push(_getText)
}
});
//使用_textHolder中的项目创建新选项
_textHolder.forEach(函数(项){
_选项+=''+项目+''
})
//清空当前选择元素并附加新选项
$('select').empty().append(_选项);

您可以循环浏览每个子文本,然后使用获取第一个文本并将其放入数组中

完成后,选择元素并附加新创建的选项

var _textHolder=[]; // NA empty array to hold unique text
var _options="";
$("select").children().each(function(item,value) {
  var _textVal = $(this).text().trim(); // Remove white space
  //get the first text content
  var _getText = _textVal.substr(0, _textVal.indexOf(" "));
  // if this text is not present in array then push it   
  if(_textHolder.indexOf(_getText) ==-1){
       _textHolder.push(_getText)
      }
   });
   // Create new options with items from _textHolder
  _textHolder.forEach(function(item){
  _options+='<option value="">'+item+'</option>'
 })
// Empty current select element and append new options
   $('select').empty().append(_options);
var[u textHolder=[];//一个空数组来保存唯一的文本
var_options=“”;
$(“选择”).children().each(函数(项、值){
var _textVal=$(this).text().trim();//删除空白
//获取第一个文本内容
var_getText=_textVal.substr(0,_textVal.indexOf(“”);
//如果此文本不在数组中,则按此按钮
if(_textHolder.indexOf(_getText)=-1){
_textHolder.push(_getText)
}
});
//使用_textHolder中的项目创建新选项
_textHolder.forEach(函数(项){
_选项+=''+项目+''
})
//清空当前选择元素并附加新选项
$('select').empty().append(_选项);

我喜欢纯JS ES6风格。这是从空格分隔选项元素的
innerText
值生成一个单词数组,而不管单词在前面、中间或结尾;它将从中创建一个独特的选项列表。基本上,我们将这些数组连接起来,并通过使用新的Set对象将其统一起来。守则如下:

var opts=document.querySelector(“select”).children,
list=Array.prototype.reduce.call(opts,function,s,c){
text=c.innerText.trim().split(“”);
返回新集合([…s].concat(text))//向集合中添加多个元素
},新集合());
列表=[…列表];//将设置为数组
对于(var i=opts.length-1;i>=0;i--){//当删除元素时,反向迭代不影响索引
列表中的i?选择[i]。innerText=列表[i]
:opts[i].parentNode.removeChild(opts[i]);
}

假的
真的
假假
假真
真的
千真万确

我喜欢纯JS ES6风格。这是从空格分隔选项元素的
innerText
值生成一个单词数组,而不管单词在前面、中间或结尾;它将从中创建一个独特的选项列表。基本上,我们将这些数组连接起来,并通过使用新的Set对象将其统一起来。守则如下:

var opts=document.querySelector(“select”).children,
list=Array.prototype.reduce.call(opts,function,s,c){