Как найти элемент с массивом а затем добавить его элементы в правильно порядке в другой массив

есть обьект у которого ключ formatFields содержит массив:

{
  formatFields: [
     {name: 'item 14'},
     {
       groups: [
         {name: 'item 12'},
         {name: 'item 13'},
       ]
     },
     {name: 'item 17'},
  ]
}

мне нужно найти groups и получить его элементы чтобы окончательный результат был таким:

{
  formatFields: [
     {name: 'item 14'},
     {name: 'item 12'},
     {name: 'item 13'},
     {name: 'item 17'},
  ]
}

Буду признателен за помощь если подскажите решение. Проблема с моим кодом что элементы с groups всегда добавляет в самый конец

formatFields.forEach((item) => {
                if (typeIs(item, 'object') && hasOwnProps(item, 'group')) {
                    item.groups.forEach((elem) => {
                        formatFields.push(elem);
                    });
                }
            });

formatFields = formatFields.filter((item) => !hasOwnProps(item, 'group'));

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

Автор решения: Igor

var a = {
  formatFields: [
    { name: 'item 14' },
    { groups: [
        { name: 'item 12' },
        { name: 'item 13' },
      ]
    },
    { name: 'item 17' }
  ]
}

var ff = a.formatFields;
for (var i = 0; i < ff.length; i++) {
  if (typeof ff[i] == 'object' && ff[i]['groups']) {
    var groups = ff.splice(i, 1)[0].groups;
    for (var j = 0; j < groups.length; j++) {
      ff.splice(i + j, 0, groups[j]);
    }
    i = i + groups.length - 1;
  }
}
console.log(a);

→ Ссылка