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

Javascript 如何从这个唯一的字符分隔字符串中删除重复项?,javascript,jquery,Javascript,Jquery,我正在从表行中收集文本框值。textbox的值是可变的。我正试图从字符串中删除重复项。我正在看接受的答案,但重复的答案仍然存在 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('@

我正在从表行中收集文本框值。textbox的值是可变的。我正试图从字符串中删除重复项。我正在看接受的答案,但重复的答案仍然存在

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

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

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

var-working={};
$(“#f#u sendToPic”).find(“#t#u obj input[class=no#u memo]”)。每个(函数(){
工作[this.value]=true;
});
var memo=Object.keys(工作).join(“@”);
控制台日志(备忘录)

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

var-working={};
$(“#f#u sendToPic”).find(“#t#u obj input[class=no#u memo]”)。每个(函数(){
工作[this.value]=true;
});
var memo=Object.keys(工作).join(“@”);
控制台日志(备忘录)


作为
@
文本框中的有效条目?如果是这样的话,您将无法将其用作分隔符。同样来自
Description:对DOM元素数组进行就地排序,并删除重复项。请注意,这仅适用于DOM元素数组,而不适用于字符串或数字。
您需要在DOM元素上调用unique,而不适用于添加的字符串版本:1.1。3@t3dodson否。我禁止将特殊字符输入文本框。所以,文本框的值可能是字符串、数字或组合。为什么要将其附加到字符串中,然后再次拆分。为什么不将其val收集到一个数组中。Yeldar的意思是,为什么不在
内部执行
arr\u memo.push($(this.val())
。然后执行
var arr\u memo=val\u memo.join(“| | |”)
循环后,将值与
@
连接,然后立即在
@
上拆分的整个部分似乎没有意义,因为
@
是文本框中的有效条目?如果是这样的话,您将无法将其用作分隔符。同样来自
Description:对DOM元素数组进行就地排序,并删除重复项。请注意,这仅适用于DOM元素数组,而不适用于字符串或数字。
您需要在DOM元素上调用unique,而不适用于添加的字符串版本:1.1。3@t3dodson否。我禁止将特殊字符输入文本框。所以,文本框的值可能是字符串、数字或组合。为什么要将其附加到字符串中,然后再次拆分。为什么不将其val收集到一个数组中。Yeldar的意思是,为什么不在
内部执行
arr\u memo.push($(this.val())
。然后执行
var arr\u memo=val\u memo.join(“| | |”)
循环后,将值与
@
连接,然后立即在
@
上拆分的整个部分似乎没有意义。谢谢您的回答。我得到了预期的输出。如果您的代码可以是ES6+,您也可以使用
Set
而不是object和
object.keys
。它更合适,看起来更好,但并非所有浏览器都支持它。@YeldarKurmangaliyev-如果问题中的代码看起来很老套,我通常不会在答案中建议新的语言功能,而且正如你所知,
Set
不受IE支持(IE11中的部分支持不算在内)。但是是的,
Set
会更巧妙地做同样的事情。@nnnnnnnn是的,我也理解了,所以我更新了我的答案:)谢谢你的回答。我得到了预期的输出。如果您的代码可以是ES6+,您也可以使用
Set
而不是object和
object.keys
。它更合适,看起来更好,但并非所有浏览器都支持它。@YeldarKurmangaliyev-如果问题中的代码看起来很老套,我通常不会在答案中建议新的语言功能,而且正如你所知,
Set
不受IE支持(IE11中的部分支持不算在内)。但是是的,
Set
会更巧妙地完成同样的事情。@nnnnnnnn是的,我也理解了,所以我更新了我的答案:)