# freeCodeCamp Challenge Guide: Set consolidation

**URL:** <https://forum.freecodecamp.org/t/freecodecamp-challenge-guide-set-consolidation/385319>\
**Category:** freeCodeCamp Contributors\
**Tags:** guide\
**Created:** [May 7, 2020, 7:18pm UTC](https://forum.freecodecamp.org/t/freecodecamp-challenge-guide-set-consolidation/385319 "2020-05-07T19:18:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![camperbot](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/camperbot/32/18364_2.png) [@camperbot](https://forum.freecodecamp.org/u/camperbot)\
**Post date:** [May 7, 2020, 7:18pm UTC](https://forum.freecodecamp.org/t/freecodecamp-challenge-guide-set-consolidation/385319/1 "2020-05-07T19:18:33Z")

</div>

# [Set consolidation](https://www.freecodecamp.org/learn/coding-interview-prep/rosetta-code/set-consolidation)

* * *

## Solutions

> **Solution 1 (Click to Show/Hide)**
>
> ```javascript
> function setConsolidation(sets) {
> function addAll(l1, l2) {
> l2.forEach(function(e) {
> if (l1.indexOf(e) == -1) l1.push(e);
> });
> }
> 
> function consolidate(sets) {
> var r = [];
> for (var i = 0; i < sets.length; i++) {
> var s = sets[i];
> {
> var new_r = [];
> new_r.push(s);
> for (var j = 0; j < r.length; j++) {
> var x = r[j];
> {
> if (
> !(function(c1, c2) {
> for (var i = 0; i < c1.length; i++) {
> if (c2.indexOf(c1[i]) >= 0) return false;
> }
> return true;
> })(s, x)
> ) {
> (function(l1, l2) {
> addAll(l1, l2);
> })(s, x);
> } else {
> new_r.push(x);
> }
> }
> }
> r = new_r;
> }
> }
> return r;
> }
> 
> function consolidateR(sets) {
> if (sets.length < 2) return sets;
> var r = [];
> r.push(sets[0]);
> {
> var arr1 = consolidateR(sets.slice(1, sets.length));
> for (var i = 0; i < arr1.length; i++) {
> var x = arr1[i];
> {
> if (
> !(function(c1, c2) {
> for (var i = 0; i < c1.length; i++) {
> if (c2.indexOf(c1[i]) >= 0) return false;
> }
> return true;
> })(r[0], x)
> ) {
> (function(l1, l2) {
> return l1.push.apply(l1, l2);
> })(r[0], x);
> } else {
> r.push(x);
> }
> }
> }
> }
> return r;
> }
> 
> function hashSetList(set) {
> var r = [];
> for (var i = 0; i < set.length; i++) {
> r.push([]);
> for (var j = 0; j < set[i].length; j++)
> (function(s, e) {
> if (s.indexOf(e) == -1) {
> s.push(e);
> return true;
> } else {
> return false;
> }
> })(r[i], set[i].charAt(j));
> }
> return r;
> }
> 
> var h1 = consolidate(hashSetList(sets)).map(function(e) {
> e.sort();
> return e;
> });
> return h1;
> }
> 
> ```

---

<div class="post-metadata">

**Author:** ![ILM](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ilm/32/363239_2.png) [@ILM](https://forum.freecodecamp.org/u/ILM)\
**Post date:** [June 1, 2021, 6:55pm UTC](https://forum.freecodecamp.org/t/freecodecamp-challenge-guide-set-consolidation/385319/2 "2021-06-01T18:55:27Z")

</div>


