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