You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery:textarea重复字符串去重失效问题(换行场景)求助

嘿,我明白你的问题了——现在你的代码只能处理空格分隔的重复字符串,但换行分隔的就失效了对吧?问题出在你分割文本的方式上,咱们来一步步解决它。

问题根源分析

你原来用split(' ')只会按单个空格分割文本,换行符(\n)、制表符或者连续空格这些情况都不会被正确处理;另外$.unique是jQuery专门为DOM元素数组设计的方法,用来处理字符串数组可能会有意外问题(比如对大小写敏感的处理、特殊字符串的识别偏差)。

解决方案(推荐ES6版本)

下面的代码会处理所有空白符(换行、空格、制表符等),并利用ES6的Set实现稳定去重:

$(document).ready(function(){
    $('button').click(function(){
        var data = $('textarea').val();
        // 分割所有空白字符(换行/空格/制表符等),同时过滤空字符串
        var arr = data.split(/\s+/).filter(item => item.trim() !== '');
        // 使用Set自动去重,再转回数组
        var uniqueArr = [...new Set(arr)];
        // 用空格拼接回字符串并更新文本框
        data = uniqueArr.join(' ');
        $('textarea').val(data);
    });
});

关键改动说明:

  • split(/\s+/):\s匹配任何空白字符,+表示匹配一个或多个,不管是换行、连续空格还是制表符,都能正确分割成单个字符串元素。
  • .filter(item => item.trim() !== ''):避免文本开头/结尾的空白导致分割出空字符串,确保数组里都是有效内容。
  • new Set(arr):Set天生不允许重复元素,用扩展运算符[... ]把Set转回数组,就能得到完全去重的字符串列表。

兼容旧浏览器版本(不用ES6)

如果需要兼容不支持ES6的旧环境,可以用传统的遍历去重方式:

$(document).ready(function(){
    $('button').click(function(){
        var data = $('textarea').val();
        var arr = data.split(/\s+/).filter(item => item.trim() !== '');
        var uniqueArr = [];
        var seen = {};
        
        // 遍历数组,用对象记录已出现的元素
        for(var i = 0; i < arr.length; i++){
            var item = arr[i];
            if(!seen[item]){
                seen[item] = true;
                uniqueArr.push(item);
            }
        }
        
        data = uniqueArr.join(' ');
        $('textarea').val(data);
    });
});

内容的提问来源于stack exchange,提问作者Mark Gerryl Mirandilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:06:25