将JavaScriptstring拆分为固定长度的部分

我想分割一个string到固定长度(例如N )件。 当然,如果原始string的长度不是N的倍数,最后一块可能会更短。

我需要最快的方法来做到这一点,也是最简单的写法。 我到现在为止的做法如下:

var a = 'aaaabbbbccccee'; var b = []; for(var i = 4; i < a.length; i += 4){ // length 4, for example b.push(a.slice(i-4, i)); } b.push(a.slice(a.length - (4 - a.length % 4))); // last fragment 

我认为必须有更好的方式去做我想做的事情。 但是我不想要额外的模块或库,只要简单的JavaScript就可以了。

在问之前,我已经看到了一些使用其他语言来解决这个问题的解决scheme,但是这些解决scheme并不是用JavaScript来devise的。

你可以试试这个:

 var a = 'aaaabbbbccccee'; var b = a.match(/(.{1,4})/g); 

看到这个相关的问题: https : //stackoverflow.com/a/10456644/711085和https://stackoverflow.com/a/8495740/711085 (如果性能是一个问题,请参阅注释中的性能testing。

首先(较慢)的链接:

 [].concat.apply([], a.split('').map(function(x,i){ return i%4 ? [] : a.slice(i,i+4) }) ) 

作为一个string原型:

 String.prototype.chunk = function(size) { return [].concat.apply([], this.split('').map(function(x,i){ return i%size ? [] : this.slice(i,i+size) }, this) ) } 

演示:

 > '123412341234123412'.chunk(4) ["1234", "1234", "1234", "1234", "12"]