我有一个像这样的字符串:
var s = 'Lorem ipsum dolor sit amet';
我想要一个像这样的数组:

var l = [3, 3, 3, 1, 2, 5, 4, 1, 2, 1];
var a = ['Lor', 'em ', 'ips', 'u', 'm ', 'dolor', ' sit', 'a', 'me', 't'];

细分的长度不同。

我知道我希望第一个元素的长度为3(Lor),第二个元素的长度为(em),第三个元素的长度为(ips),第四个元素的长度为(u),第五个元素的长度为5(m),第六个元素的长度为5( dolor),第七个4(sit),第八个1(a),第九个2(me)和第十个1(t)。

我能怎么做?

最佳答案

您可以映射单个长度的部分。

它与最后一个位置p的闭包一起工作

(p => i => string.slice(p, p += i))(0)
(p =>                             )(0) // call function with zero as p and return cb
      i => string.slice(p, p += i)     // callback for map

var lengths = [3, 3, 3, 1, 2, 5, 4, 1, 2, 1],
    string = 'Lorem ipsum dolor sit amet',
    result = lengths.map((p => i => string.slice(p, p += i))(0));

console.log(result);

09-25 21:13