'Ho can i make an array of only those values, that are non-unique in initial array in js? [closed]

i have this array:

var arr = ["apple","potato","carrot","tomato","grape","banana","potato","carrot","carrot"];

As you can see, we have "potato" 2 times in this array, and also "carrot" 3 times in this array. How can i create a new array, that will content only "potato" and "carrot" values, so only values that are not single/unique in initial array?

Like this:

["potato","carrot"];

How it can be done in js?



Solution 1:[1]

Check this one liner:

[...new Set(arr.filter(e => arr.filter(a => a === e).length > 1))];

arr.filter(e ...) - filter array for duplicates

[...new Set(...))] - create array with unique values using set and spread syntax

Working snippet:

var arr = ["apple","potato","carrot","tomato","grape","banana","potato","carrot","carrot"];

console.log([...new Set(arr.filter(e => arr.filter(a => a === e).length > 1))]);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jns