梗概:
使用slice()方法
代码实现
/** @param indexes 索引位置必须是正序的,可以使用负数索引
* 索引所指向的元素会被舍弃
*/
function splitByIndex<elementT>(arr: Array<elementT> | string, indexes: number[]) {
const rst: Array<Array<elementT> | string> = [];
let i: number;
for (i = 0; indexes[i] == 0; ++i);
/* 分割第一组 */
rst.push(arr.slice(0, indexes[i])); ++i;
/* 利用正序的indexes来分割剩下的组 */
for (; i < indexes.length; ++i) {
rst.push(arr.slice(indexes[i - 1] + 1, indexes[i]))
}
/* 分割最后一组 */
rst.push(arr.slice(indexes.slice(-1)[0] + 1));
return rst;
}