Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

88
Views
Busque números especiales en una matriz usando Javascript

Escriba un método que encuentre eficientemente con respecto al tiempo usado, todos los números que ocurren exactamente una vez en la matriz de entrada. Devuelve una matriz vacía si no se encuentran tales números. por ejemplo, printSpecialNumbers([1,5,1,7]) debería devolver [5, 7];

 function printSpecialNumbers(niqueNum) {
}

let result = printSpecialNumbers([1,5,1,7]);
console.log(result); 

Aparentemente, mi código solo imprime uno de los números especiales que son cinco.

 function printSpecialNumbers(niqueNum) {
 var obj = {};
 for (var i = 0; i<niqueNum.length; i++) {
 if (typeof obj[niqueNum[i]] !== "undefined") {
 delete obj[niqueNum[i]];
 continue;
 }
 obj[niqueNum[i]] = i;
 }
 return Number(Object.keys(obj)[0]);
}

let result = printSpecialNumbers([1, 5, 1, 7]);
console.log(result);
almost 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Su problema es que solo devuelve el primer valor encontrado al usar

 return Number(Object.keys(obj)[0]);

En cambio, desea devolver la matriz completa, lo que puede hacer con:

 return Object.keys(obj).map(Number);

También tiene otro problema, que es que su código devolverá cualquier número que se vea un número impar de veces, entonces (por ejemplo)

 printSpecialNumbers([1, 5, 1, 7, 1])

devolverá [1, 5, 7] . Puede evitar esto manteniendo un recuento de la cantidad de veces que se ve un número y devolviendo solo aquellas que se ven una vez.

 function printSpecialNumbers(niqueNum) {
 var obj = {};
 for (var i = 0; i < niqueNum.length; i++) {
 obj[niqueNum[i]] = (obj[niqueNum[i]] || 0) + 1;
 }
 let res = [];
 Object.keys(obj).forEach(k => {
 if (obj[k] == 1) res.push(Number(k));
 });
 return res;
}

let result = printSpecialNumbers([1, 5, 1, 7]);
console.log(result);

almost 4 years ago · Santiago Trujillo Report

0

Probablemente hay múltiples formas. Aquí hay una versión rápida que usa los métodos de matriz indexOf() y lastIndexOf() . Básicamente, mientras se ejecuta el ciclo, si el índice del elemento que se procesa es igual a su último índice, sabemos que solo hay una copia en la matriz.

 function printSpecial(arr) {
 let specials = [];
 for (let i = 0; i < arr.length; i++) {
 if (arr.indexOf(arr[i]) === arr.lastIndexOf(arr[i])) {
 specials.push(arr[i])
 }
 }
 return specials
}

let result = printSpecial([1, 5, 1, 7]);
console.log(result)

almost 4 years ago · Santiago Trujillo Report

0

const printSpecialNumbers = (numbers = []) => numbers.netuce((acc,
 number, idx, all) => {
 if (all.filter(s => s === number).length < 2) {
 acc = [...acc, number]
 }
 return acc
}, [])
almost 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!