如何从这个唯一的char分隔字符串中删除重复项?

时间:2017-07-17 03:44:58

标签: javascript jquery

我正在从表格行中收集文本框值。文本框的值是多种多样的。我试图从字符串中删除副本。我正在查看 this 接受的答案,但副本仍然存在。

var memo    = "";
$("#f_sendToPic").find('#t_obj input[class=no_memo]').each(function(index, result) {
   memo +=$(this).val();
   memo += "@";
});

var val_memo = $.unique(memo.split('@'));
var arr_memo = val_memo.join('|||');

alert(memo);
alert(arr_memo);

如果可能的话,我更喜欢浏览器友好的方法,而不是性能。

1 个答案:

答案 0 :(得分:2)

使用属性名称设置为值的对象,将自动过滤掉重复项。然后使用Object.keys()获取数组中的属性名称,并使用.join()数组获取一个字符串,其值由"@"分隔。



var working = {};
$("#f_sendToPic").find('#t_obj input[class=no_memo]').each(function() {
  working[this.value] = true;
});

var memo = Object.keys(working).join("@");

console.log(memo);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="f_sendToPic"><div id="t_obj">
  <input class="no_memo" value="abc">
  <input class="no_memo" value="def">
  <input class="no_memo" value="abc">
  <input class="no_memo" value="def">
  <input class="no_memo" value="ghi">
</div></div>
&#13;
&#13;
&#13;

另外,请注意this.value$(this).val();更容易阅读,更容易输入,执行效率更高。