Проверьте, находится ли набор диапазонов внутри и охватывает ли другой диапазон - PullRequest
0 голосов
/ 28 мая 2020

У меня есть диапазон, который определяется start и end, и массив диапазонов в collection

var start = 10;
var end = 60;

var collection = [
    {start:5, end:15},
    {start:15, end:30},
    {start:45, end:60}
];

Как проверить, находятся ли диапазоны в collection в пределах start и end и охватил весь диапазон?

1 Ответ

0 голосов
/ 29 мая 2020
• 1000 Проверьте, находится ли массив в пределах диапазона, если он в пределах диапазона, удалите эти числа из основного массива, если не верните false (массив для проверки не находится в диапазоне) После l oop, проверьте длину основного массива, если она больше 0, верните false (коллекция массива находится в пределах диапазона, но не покрывает основной диапазон). Если это 0, значит, массив коллекции находится в пределах допустимого диапазона и охватывает весь основной массив.

При поиске в Google я обнаружил, что используется loda sh. вот код в моей функции:

let parentRange = _.range(start, end + 1); // Expand into array of numbers

for (var i = 0; i < collection.length; i++) {
    let rangeToCheck = _.range(collection[i].start, collection[i].end + 1); //Also expand into array of numbers
    if (_.difference(rangeToCheck, parentRange).length === 0) { // Check if collection range is within parent range
        _.pullAll(parentRange, rangeToCheck); // Remove the numbers from parent range that matches collcection range
    } else {
        return false; // Not within parent range
    }
}

// Check if parent range has values left
if (parentRange.length != 0) {
    return false; // Collection ranges does not cover parent range
} else {
    return true; // Collection ranges is within parent range, and cover the whole numbers
}
...