7

I want to merge these array in to single array with unique value. don't want repeated values.

0:Array(2) ["General Fitness", "Health & Fitness"]
1:Array(2) ["Cardiovascular", "Meditation"]
2:Array(3) ["Health & Fitness", "Cardiovascular", "General Fitness"]
3:Array(1) ["Cardiovascular"]

I am expecting this answer:

["General Fitness", "Health & Fitness", "Cardiovascular", "Meditation"]
Saad Ahmed
  • 700
  • 1
  • 8
  • 15

4 Answers4

15

With lodash you can use _.union() and _.spread() to generate a function that flattens to a single array with unique values:

const fn = _.spread(_.union);

const arrs = [ 
  ["General Fitness", "Health & Fitness"],
  ["Cardiovascular", "Meditation"],
  ["Health & Fitness", "Cardiovascular", "General Fitness"],
  ["Cardiovascular"]
];

const result = fn(arrs);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>

Using ES6 you can flatten the arrays, and make the result unique by passing it through a Set, and spreading back to an array:

const arrs = [ 
  ["General Fitness", "Health & Fitness"],
  ["Cardiovascular", "Meditation"],
  ["Health & Fitness", "Cardiovascular", "General Fitness"],
  ["Cardiovascular"]
];

const result = [...new Set(arrs.flat())];

console.log(result);
Ori Drori
  • 183,571
  • 29
  • 224
  • 209
9

const arrs = [ 
  ["General Fitness", "Health & Fitness"],
  ["Cardiovascular", "Meditation"],
  ["Health & Fitness", "Cardiovascular", "General Fitness"],
  ["Cardiovascular"]
];

const result = _.uniq(_.flatten(arrs));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
iofjuupasli
  • 3,818
  • 1
  • 16
  • 17
4

use union

var object =  ["General Fitness", "Health & Fitness"];
var other =  ["Cardiovascular", "Health & Fitness", "Meditation"]
 
_.union(object, other);

// ["General Fitness", "Health & Fitness", "Cardiovascular", "Meditation"]
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
abhishek gupta
  • 363
  • 5
  • 8
0

Simply use lodash flatten method:

const arrs = [ 
  ["General Fitness", "Health & Fitness"],
  ["Cardiovascular", "Meditation"],
  ["Health & Fitness", "Cardiovascular", "General Fitness"],
  ["Cardiovascular"]
];

result = _.flatten(arrs);

console.log(result);
Monty
  • 21
  • 4