Добавление объектов в элемент массива

Нужно создавать массив объектов в элементе массива, пока не будет ct === 17, потом следующий массив объектов в следующем элементе массива.

Сделал так, но проблема в том, что если в начальном массиве не будет ct: 17, то ничего не запишется, а писать нужно всегда, и если нет ct: 17, то должен быть просто массив объектов в первом элементе массива.

const arr = [
  { nm: "inpt1", ct: 1 },
  { nm: "inpt2", ct: 1 },
  { nm: "inpt3", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt4", ct: 1 },
  { nm: "lineBr2", ct: 17 },
];

let res = [],
  tmp = [];
arr.forEach((elem) => {
  if (elem.ct !== 17) {
    tmp.push(elem);
  }
  if (elem.ct === 17) {
    res.push(tmp);
    tmp = [];
  }
});
console.log(res);

Что бы избежать этого, делаю запись по индексу, и переключение индекса при elem.ct === 17, но у меня проблема: как добавить объект к другим объектом внутри элемента массива?

const arr = [
  { nm: "inpt1", ct: 1 },
  { nm: "inpt2", ct: 1 },
  { nm: "inpt3", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt4", ct: 1 },
  { nm: "lineBr2", ct: 17 },
];

const res = [];
let indx = 0;
arr.forEach((elem) => {
  if (elem.ct !== 17) {
    res[indx] += elem; // знаю что это не работает с объектами, но как сделать нечто похожее? 
  }
  if (elem.ct === 17) {
    indx++;
  }
});

console.log(res);

const arr = [
  { nm: "inpt1", ct: 1 },
  { nm: "inpt2", ct: 1 },
  { nm: "inpt3", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt4", ct: 1 },
  { nm: "lineBr2", ct: 17 },
];
// должно получится 
[
    [
      { nm: "inpt1", ct: 1 },
      { nm: "inpt2", ct: 1 },
      { nm: "inpt3", ct: 1 },
    ],
    [
      { nm: "inpt4", ct: 1 },
    ]
]

const arr = [
  { nm: "inpt1", ct: 1 },
  { nm: "inpt2", ct: 1 },
  { nm: "inpt3", ct: 1 },
  { nm: "inpt4", ct: 1 },

];
// должно получится 
[
  [
    { nm: "inpt1", ct: 1 },
    { nm: "inpt2", ct: 1 },
    { nm: "inpt3", ct: 1 },
    { nm: "inpt4", ct: 1 },
  ],
]

const arr = [
  { nm: "inpt1", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt2", ct: 1 },
  { nm: "inpt3", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt4", ct: 1 },

];
// должно получится 
[
  [
    { nm: "inpt1", ct: 1 },
  ],
  [
    { nm: "inpt2", ct: 1 },
    { nm: "inpt3", ct: 1 },
  ],
  [ ],
  [ 
    { nm: "inpt4", ct: 1 },
  ]  
]

Ответы (1 шт):

Автор решения: Андрей Иванов

спасибо @Grundy, помог задуматься и сформировать мысль что именно я хочу))

const arr = [
  { nm: "inpt1", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt2", ct: 1 },
  { nm: "inpt3", ct: 1 },
  { nm: "lineBr1", ct: 17 },
  { nm: "lineBr1", ct: 17 },
  { nm: "inpt4", ct: 1 },

];

let res = [],
    tmp = [];
arr.forEach((elem, index) => {
  if (elem.ct !== 17) {
    tmp.push(elem);
  }
  if (elem.ct === 17 || index === (arr.length-1)) {
    res.push(tmp);
    tmp = [];
  }
});
console.log(res);

→ Ссылка