zoukankan      html  css  js  c++  java
  • 数组思维 -- join的一些用法感悟

    组合字符串的时候, 组合 sql 的时候, 使用join 会非常有用, join  and
     
    记得前端时间去看面试题的时候, 总会出一个小的性能题目, 就是
     
    如果有大量的字符串处理的时候, 怎么可以提高性能.
    既然是 JavaScript 的题目, 肯定不会如 java 说, 用 StringBuffer
     
    这个题目的其中一个答案就是 采用数组, 然后再进行join 空字符串的操作.
    例如
     
    const arr = [];
    for(let i = 0; i < 1000; i++) {
    arr.push(“this is your huge content “ + i);
    }
    const str = arr.join(“”);
     
    其实说实话, 懒惰的我并没有对此进行过多的性能测试.
    不过看了许多一些开源库里边的写法, 可以说 JavaScript 的 array 在其中是
    万能的. 基本上很多的一些结构或者框架的运行都是基于数组的.
    比如JavaScript的基础, 事件队列.
    array中提供了 push, pop, shift, unshift 的方法, 让 js 中的 array 操作可以
    实现栈也可以实现队里. 这一些有空去分析下.
     
    不管性能如何, 不过在一些比较复杂的字符串操作中, 学会使用join, 倒是一个很好
    的习惯, 起码让我们对数据的处理会比较清晰.
     
    万事不然例子, 比如我要做一组字符串的拼接, 但是字符串中可能会有空字符串,
    可能会有 undefined 或者 null 值等. 但是这些数据我是需要过滤掉的.
     
    所以, 如果只是 += 的操作, 我需要判断很多. 例如
    let tmp_a = !!a ? a : ‘’; //或者可以写一个处理方法
    let retStr += tmp_a;
    如果数据很多, 只是这么拼接会让人感觉很乱, 并且似乎会漏掉一些数据.
    如果这些数据本来就是基于数组, 那么就更不方便了.
    采用一个数组, 然后对每种情况进行 push 操作, 通过 filter 过滤, 然后join一下, 一目了然
    const tmpArr = [];
    …
    tmpArr.push(a);….
    tmpArr.push(z);
     
    const retStr =  tmpArr.filter(function(item){return !!item;}).join(“”);
     
  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/asdfq/p/7192408.html
Copyright © 2011-2022 走看看