我想通过一个或多个给定的分隔符将数组拆分为子数组列表。

像这样的东西:

var myArray = [null, 5, 'whazzup?', object, '15', 34.6];
var mySeperators = [null, '15'];

splitArray(myArray, mySeperators)


应该导致:

[[], [5, 'whazzup?', object], [34.6]]


源数组可以多次包含分隔符。如何做到这一点?

当它使解决方案变得更容易时,我正在使用mootools作为基础库。

最佳答案

给定ECMAScript 5,可以使用Array#reduce来实现:

myArray.reduce(function(currentArrays, nextItem) {
    if(~mySeparators.indexOf(nextItem))
        currentArrays.push([]);
    else
        currentArrays[currentArrays.length - 1].push(nextItem);

    return currentArrays;
}, [[]]);


我没有MooTools的经验;但是,如果需要向后兼容,则为appears to polyfill Array#reduce

10-05 21:06