У меня есть упорядоченный массив, который я получаю из БД, который выглядит примерно так:
let myArray = [
{month: 1, visible: true},
{month: 2, visible: false},
{month: 3, visible: true},
{month: 4, visible: false},
{month: 5, visible: false},
{month: 6, visible: true},
{month: 7, visible: true},
{month: 8, visible: false},
{month: 9, visible: true},
{month: 10, visible: false},
{month: 11, visible: false},
{month: 12, visible: false}
];
, что мне нужно сделать, это уменьшить его до нового массива, где первый объект будет быть первым month
, обладающим свойством visible = true
, тогда все последние месяцы, которые имеют month = true
, будут занимать все месяцы; это означает, что месяцы будут игнорироваться, только если они не находятся в последовательности, поэтому, если они не создают пробелы.
В моем примере выше, он будет возвращать все объекты, кроме последнего 3 (10, 11, 12)
, потому что они находятся вне последовательности, которая создается первым TRUE
и последним TRUE
(в данном случае month 1
и month 9
)
Надеюсь, я дал понять, как мне завершить мой метод limit ()?
myArray = myArray
.sort((a, b) => a.month - b.month)
.reduce((arr, current, idx) => {
return arr;
}, []);
Желаемый результат:
let myArray = [
{month: 1, visible: true},
{month: 2, visible: false},
{month: 3, visible: true},
{month: 4, visible: false},
{month: 5, visible: false},
{month: 6, visible: true},
{month: 7, visible: true},
{month: 8, visible: false},
{month: 9, visible: true}
];