Разделить массив (неравномерные куски), когда значение элемента заканчивается на «назад»

К сожалению, мне нужно разделить массив, чтобы куски были неравномерными, однако я знаю, что каждый новый массив заканчивается элементом, в значении которого есть ago(пробел назад).

Const arrExample = ["Blah","559","86,758","4.05","2.38","-4.48%","-0.44%","13,562","30d ago", "Trall","531","210,676","16","15","-3.8%","4,955","403d ago", "Shibu","506","991,748","84","6.71%","5,897","667d ago", "Mommy","404","35,083","1.64","1.64","-8.38%","17%","7,378","323d ago","Rocket","403","274",".4088",".355","-","-","483","47h ago"...]

Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object тоже возвращает true?
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) - это древовидная структура данных, которая представляет структуру и иерархию исходного кода на языке...
1
0
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Переберите входной массив, чтобы найти позиции, в которых фрагменты начинаются и заканчиваются, используя String.prototype.endsWith() . Затем мы можем использовать нативный метод Array.prototype. slice(), чтобы получить весь фрагмент и сразу вставить его в результаты... что должно быть более эффективным, чем создание массива фрагментов и изменение его размера по мере того, как мы помещаем в него каждое отдельное значение, особенно в качестве входных данных. и размеры кусков увеличиваются.

const input = ["Blah","559","86,758","4.05","2.38","-4.48%","-0.44%","13,562","30d ago", "Trall","531","210,676","16","15","-3.8%","4,955","403d ago", "Shibu","506","991,748","84","6.71%","5,897","667d ago", "Mommy","404","35,083","1.64","1.64","-8.38%","17%","7,378","323d ago","Rocket","403","274",".4088",".355","-","-","483","47h ago"];
const output = [];
const length = input.length; // caching length can improve performance
let seekIndex = 0, chunkIndex = 0;
while (seekIndex < length) {
  if (input[seekIndex++].endsWith(" ago")) { // post-increment seekIndex
    output.push(input.slice(chunkIndex, seekIndex)); // slice & push entire chunk
    chunkIndex = seekIndex; // set the next chunkIndex
  }
}
console.info(output);

Может быть, это поможет, если я вас правильно понимаю

const result = [];
let acc = [];
for (let item of arrExample) {
    acc.push(item);
    if (item.endsWith(' ago')) {
        result.push(acc); // if last element can be without ' ago' you should check emptyness of acc after cycle
        acc = [];
    } 
}

Другие вопросы по теме