在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Linux  HTML/ 在Koa2源碼中發(fā)現多次使用xx.split(/\s*,\s*/),為什么不使用

在Koa2源碼中發(fā)現多次使用xx.split(/\s*,\s*/),為什么不使用xx.split(',')?

var a = ',,,111,,,';
console.time('測試 a 速度')
a.split(/\s*,\s*/)[0]
console.timeEnd('測試 a 速度')
console.time('測試 b 速度')
a.split(',')[0]
console.timeEnd('測試 b 速度')

上面代碼可以測試出b的速度明顯比a的快,
然而在Koa2源碼中發(fā)現多次使用xx.split(/s,s/),為什么不使用xx.split(',')?
希望可以得到解答,萬分感謝!
下面圖片是Koa2 lib > request.js文件中的一部分截圖:
圖片描述

回答
編輯回答
笨小蛋

/\s*,\s*/這個正則匹配的是0到多個空白符,然后是逗號,然后是0到多個空白符;
split(/\s*,\s*/)split(',')的區(qū)別是要不要處理逗號前后的空白符;
一般情況下,我們認為字符串前后的空白符都是沒有什么作用的,所以會使用string.trim()方法來去掉前后的空白符。

所以,假設需要處理的字符串是"Nancy , Lucy",我們想要的結果是["Nancy", "Lucy"]
那么,使用split(/\s*,\s*/)的結果就是想要的結果:

var str = "Nancy  ,  Lucy"
str.split(/\s*,\s*/) // ["Nancy", "Lucy"]

如果使用split(','),則我們需要對split之后的數組的每個元素多進行一次trim()操作:

var str = "Nancy  ,  Lucy"
var result = str.split(',') // ["Nancy  ", "  Lucy"]
result = result.map(item => item.trim()) // 此時result為["Nancy", "Lucy"]
2018年2月5日 15:26
編輯回答
安于心

因為他們想做的事不是 split(',')。你可以試試var a = ',, ,111,,,'; 時split結果有什么不同。

2017年8月28日 20:50
編輯回答
朕略傻

簡單的字符串可以使用前者來做,如果復雜點的字符串,只用正則來做一是標準,而是效率高。

2017年10月10日 16:10