Reputation: 777
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"]
Upvotes: 8
Views: 21745
Reputation: 21
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);
Upvotes: 0
Reputation: 193047
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);
Upvotes: 15
Reputation: 373
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>
Upvotes: 4
Reputation: 3873
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>
Upvotes: 10