src/app/pages/FeatureIdxPage/flattenGroups.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
export default groups => {
  const numberOfGroups = groups.length;
  if (numberOfGroups < 2) {
    return groups;
  }
  const flattenedGroups = [];
  // eslint-disable-next-line no-plusplus
  for (let i = numberOfGroups - 1; i >= 0; i--) {
    const group = groups[i];
    if (group.strapline || i === 0) {
      flattenedGroups.push(group);
    } else {
      const previousGroup = groups[i - 1];
      const flattenItems = [...previousGroup.items, ...group.items];
      previousGroup.items = flattenItems.reduce((itemArray, currentItem) => {
        const itemFound = itemArray.find(
          item => JSON.stringify(item) === JSON.stringify(currentItem),
        );
        if (!itemFound) {
          return itemArray.concat(currentItem);
        }
        return itemArray;
      }, []);
    }
  }
  return flattenedGroups.reverse();
};