数组思维 -- 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(“”);

 

 
posted @ 2017-07-16 23:26  北山秋叶  阅读(504)  评论(0编辑  收藏  举报