我有一个像这样的字符串: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);