V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
muunala10221
V2EX  ›  程序员

请教一个 js 字符串问题。。

  •  
  •   muunala10221 · 2021-03-09 18:33:29 +08:00 · 1327 次点击
    这是一个创建于 1135 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个数组 里面的元素都是字符串,如果某一个元素中全是 \n 那么移除掉这个元素,只能想到遍历数组 然后遍历字符串,但性能太低下了 有什么比较好的办法吗 感谢

    66beta
        1
    66beta  
       2021-03-09 18:35:27 +08:00
    遍历数组没问题,为什么要遍历字符串?
    '1\n2\n3'.replace(/\n/g, '')
    muunala10221
        2
    muunala10221  
    OP
       2021-03-09 18:37:02 +08:00
    @66beta 感谢回复,全是 \n 的才处理 像这种'1\n2\n3'不处理的哦 例如 ['1\n2', '\n\n\n', '\n'] 数组 1 和 2 要处理
    muunala10221
        3
    muunala10221  
    OP
       2021-03-09 18:45:11 +08:00
    想到一个思路 也是遍历字符串 如果遍历到的字符 不是 \n 就跳过 能节省点性能 不知道还有没有更好的办法
    g1f9
        4
    g1f9  
       2021-03-09 18:45:28 +08:00 via Android
    trim 一下判空怎么样。至于性能,是你觉得慢,还是实际业务因为这个问题没达到要求
    tnjin
        5
    tnjin  
       2021-03-09 18:48:43 +08:00
    遍历数组,然后用正则判断当前元素是否全为\n,是就移除,不是就不移除。
    var reg = new RegExp("^\n*$");
    zictos
        6
    zictos  
       2021-03-09 18:48:56 +08:00
    var str = "\n\n\n\n\n";
    var n = str.search(/^\n+$/);

    如果 n 等于 0,就说明字符串全是\n
    Building
        7
    Building  
       2021-03-09 18:53:59 +08:00 via iPhone
    这样循环处理其实没有什么性能问题,毕竟都是在内存上操作,字符串也是有长度限制的,你再匹配或者替换一下字符串反而更复杂。
    66beta
        8
    66beta  
       2021-03-09 18:55:42 +08:00
    思想不滑坡,办法总有多 if (str.replace(/\n/g, '') !== '')
    Vegetable
        9
    Vegetable  
       2021-03-09 19:02:23 +08:00
    没什么好办法,循环+及时跳出就到头了,再搞下去在 jit 面前也未必有意义。
    autoxbc
        10
    autoxbc  
       2021-03-09 19:20:14 +08:00
    遇到性能问题再谈性能优化
    ljpCN
        11
    ljpCN  
       2021-03-09 20:28:17 +08:00
    ['1\n2', '\n\n\n', '\n'].filter((s) => !/^\n*$/.test(s));
    Reapper
        12
    Reapper  
       2021-03-10 09:10:02 +08:00
    数组肯定要遍历,但是字符串可以用正则啊!
    if(!'some character'.match(/[^\n]/)){ //记录序号,最后再删除 }
    muunala10221
        13
    muunala10221  
    OP
       2021-03-10 09:48:43 +08:00
    muunala10221
        14
    muunala10221  
    OP
       2021-03-10 09:49:52 +08:00
    @g1f9 业务是 web 上的 sql 编辑,就是可能会有 N 个库 每个库下有可能 N 个表 N 个视图 N 个 trigger...然后每个表下语句可能很大 算是我个人觉得会导致性能问题
    g1f9
        15
    g1f9  
       2021-03-10 10:18:30 +08:00 via Android
    @muunala10221 那还是建议先做,有瓶颈了再优化,从各个端口进行尝试。比如在存数据的时候,无意义的数据就不存之类的
    muunala10221
        16
    muunala10221  
    OP
       2021-03-10 10:32:25 +08:00
    @g1f9 OK 感谢
    muunala10221
        17
    muunala10221  
    OP
       2021-03-10 10:58:46 +08:00
    @zictos 感谢 解决了我的问题 👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5280 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:51 · PVG 15:51 · LAX 00:51 · JFK 03:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.