如何使用jQuery删除元素中的重复文本?

时间:2019-07-06 10:56:42

标签: jquery text

可以使用jQuery删除重复文本吗?我有以下设置:

<td class="product-name">Instagram workshop - Instagram workshop</td>
    <td class="product-name">Product 4 - Product 4</td>

jQuery是否可以删除“-Instagram研讨会”,所以我必须遵循以下输出:

<td class="product-name">Instagram workshop</td>
<td class="product-name">Product 4</td>

2 个答案:

答案 0 :(得分:1)

您可以使用product-name类来获取所有元素,并使用.each()对其进行迭代。通过使用.each(),您可以使用$(this)访问要迭代的当前元素。正如将this设为jquery对象一样,这将为您提供执行jquery方法的方法。

当您要修改每个td元素中的文本时,可以通过使用.text()来完成。 text()允许您传入一个函数,然后您可以return想要在元素中显示的新文本的结果。在下面的示例中,我使用了Set.split()来创建唯一单词的容器(由-分隔)。通过使用扩展语法(...)将集合扩展回数组,您可以将所有数组元素(即单词)重新连接成一个较大的字符串,该字符串将不再包含重复的单词。

请参见以下示例:

$(".product-name").each(function() {
  $(this).text(function(_, txt) {
    return [...new Set(txt.split(' - '))].join(' - ');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border="1">
  <tr>
    <td class="product-name">Instagram workshop - Instagram workshop</td>
    <td class="product-name">Product 4 - Product 4</td>
    <td class="product-name">Product 1 - Product 2 - Product 2</td>
  </tr>
</table>

答案 1 :(得分:1)

简单的解决方案是使用正则表达式:

([^\-]+)\s*\-\s*\1

在这里捕获组(在方括号中),然后使用回调引用比较单词。您可以使用它来搜索内容并将其替换为$1-第一组之间没有任何字符