function lastIndexOfOutside(data, item, index, exclude) {
    var result, positionResult = {start: index ? index + 1 : data.length + 1, end: 0};

    do {
        result = data.lastIndexOf(item, positionResult.start - 1);
    } while (result.index !== -1 && (positionResult = inPosition(result.index, exclude)));
    return result;
}
function lastIndexOfOutside(data, item, index, exclude) {
    var result, positionResult = {start: index ? index + 1 : data.length + 1, end: 0};

    do {
        result = data.lastIndexOf(item, positionResult.start - 1);
    } while (result.index !== -1 && (positionResult = inPosition(result.index, exclude)));
    return result;
}
function lastIndexOfOutside ( data , item , index , exclude ) { var result , positionResult = { start : index ? index + 1 : data . length + 1 , end : 0 } ; do { result = data . lastIndexOf ( item , positionResult . start - 1 ) ; } while ( result . index !== - 1 && ( positionResult = inPosition ( result . index , exclude ) ) ) ; return result ; }
Finds the last index of the item outside of the given positions

@param {String} data The string to search
@param {String} item The item to find
@param {Number=data.length} index The end index
@param {Array<{start: Number, end: Number}>} exclude The boundaries to exclude
@returns {Number} The found index, or -1 if none found
Finds the last index of the item outside of the given positions