К сожалению, мне нужно разделить массив, чтобы куски были неравномерными, однако я знаю, что каждый новый массив заканчивается элементом, в значении которого есть 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"...]
Переберите входной массив, чтобы найти позиции, в которых фрагменты начинаются и заканчиваются, используя 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 = [];
}
}