DEV Community

Cover image for Create a unique array using Set() in JavaScript.
Ramu Narasinga
Ramu Narasinga

Posted on • Edited on • Originally published at thinkthroo.com

Create a unique array using Set() in JavaScript.

In this article, we analyze how you can create a unique array using new set in JavaScript, inspired by a code reference from TypeDoc.

Image description

Let’s first understand this unique function in the above image with an example and then we will look at how this is used in TypeDoc source code.

unique function

export function unique<T>(arr: Iterable<T> | undefined): T[] {
    return Array.from(new Set(arr));
}
Enter fullscreen mode Exit fullscreen mode

This function is picked from typedoc/src/lib/utils/array.ts.

Array.from static method creates a new, shallow-copied Array instance from an iterable or array-like object.

Array.from() lets you create Arrays from:

  • iterable objects (objects such as Map and Set); or, if the object is not iterable,

  • array-like objects (objects with a length property and indexed elements).

If you were to run this below code in your browser’s console, you will quickly realise that Set removes duplicate values.

new Set([1,2,3,1,2,5,4,3,])
// result: Set(5) {1, 2, 3, 5, 4}
Enter fullscreen mode Exit fullscreen mode

Combining these two concepts, you can now create a unique array using new Set(), simple and easy.

How TypeDoc uses unique function

TypeDoc imports unique function into lib/application.ts at L366.

There is a similar approach suggestion in this Stackoverflow answer.

const unique = (list) => {
  return [...new Set(list)];
}
Enter fullscreen mode Exit fullscreen mode

This is picked from Stackoverflow and uses spread operator instead of Array.from method.

About me:

Hey, my name is Ramu Narasinga. I study large open-source projects and create content about their codebase architecture and best practices, sharing it through articles, videos.

I am open to work on an interesting project. Send me an email at ramu.narasinga@gmail.com

My Github - https://github.com/ramu-narasinga
My website - https://ramunarasinga.com
My Youtube channel - https://www.youtube.com/@thinkthroo
Learning platform - https://thinkthroo.com
Codebase Architecture - https://app.thinkthroo.com/architecture
Best practices - https://app.thinkthroo.com/best-practices
Production-grade projects - https://app.thinkthroo.com/production-grade-projects

References:

  1. https://github.com/TypeStrong/typedoc/blob/master/src/lib/application.ts#L366

  2. https://github.com/TypeStrong/typedoc/blob/master/src/lib/utils/array.ts#L98C8-L100C2

  3. https://stackoverflow.com/questions/6940103/how-do-i-make-an-array-with-unique-elements-i-e-remove-duplicates

  4. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from



SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay