¿Cómo crear una array que contenga elementos que no se repiten en JavaScript?

Los siguientes son los dos enfoques para generar una array que contiene n número de números aleatorios que no se repiten .

  1. Usando el bucle do-while y la función include().
  2. Usando un conjunto y comprobando con su tamaño.

Usando el ciclo do-while y la función include(): Aquí, la función include() verifica si un elemento está presente en la array o no.

Nombre de archivo: index.js

JavaScript

// You can take this value from user
const n = 5
  
// Initial empty array
const arr = [];
  
// Null check
if (n == 0) {
    console.log(null)
}
  
do {
    // Generating random number
    const randomNumber = Math
        .floor(Math.random() * 100) + 1
  
    // Pushing into the array only 
    // if the array does not contain it
    if (!arr.includes(randomNumber)) {
        arr.push(randomNumber);
    }
  
} while (arr.length < n);
  
// Printing the array elements
console.log(arr)

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

[ 49, 99, 27, 86, 69 ]

Complejidad del tiempo: 

O(n2)

Usando un conjunto y comprobando con su tamaño: Recuerda que un conjunto no admite elementos duplicados.

Nombre de archivo: index.js

JavaScript

// You can take this value from user
const n = 5
  
// Initial empty array
const arr = [];
  
// Null Check
if (n == 0) {
    console.log(null)
}
  
let randomnumbers = new Set, ans;
  
// We keep adding elements till
// size of set is equal to n 
while (randomnumbers.size < n) {
  
    // Generating random number 
    // and adding it
    randomnumbers.add(Math.floor(
        Math.random() * 100) + 1);
}
  
// Copying set elements into 
// the result array
ans = [...randomnumbers];
  
// Printing the array
console.log(ans)

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

[ 52, 32, 50, 59, 95 ]

Complejidad del tiempo:

O(n)

Publicación traducida automáticamente

Artículo escrito por dikshapatro y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *