• 数组思维 -- 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(“”);
     
  • 相关阅读:
    (14)模板的导入和继承
    (13)自定意义标签和过滤器 (templatetags)
    (12)模板语言-with
    (11)模板语言-if判断
    (0)diango、ORM的语法
    python修炼12 -----协程
    python 修炼11 ----------线程进程
    线程 进程 定义
    Python基础之面向对象进阶
    Python ---------copy
  • 原文地址:https://www.cnblogs.com/asdfq/p/7192408.html
Copyright © 2020-2023  润新知