javascript - Come posso restituire solo il numero di valori associati nell'array?




(3)

Ecco un altro approccio usando un Set :

function pairNumbers(arr) {
  let count = 0;
  const set = new Set();

  for (let i = 0; i < arr.length; i++) {
    if (set.has(arr[i])) {
      count++;
      set.delete(arr[i])
    } else {
      set.add(arr[i])
    }
  }

  return count;
}
console.log(pairNumbers([10, 10, 10, 10, 20, 20, 20, 30, 50])) // 3

Voglio visualizzare il numero di valori associati nell'array. Ad esempio, ho questo array:

[10,10,10,10,20,20,20,30,50]

Vorrei visualizzare 3 perché abbiamo 3 coppie di numeri. Come posso fare questo?

function pairNumber(arr) {
  var sorted_arr = arr.sort();
  var i;
  var results = [];
  for (i = 0; i < sorted_arr.length; i++) {
    if (sorted_arr[i + 1] == sorted_arr[i]) {
      results.push(sorted_arr[i]);
    }

  }
  return results.length;
}
console.log(pairNumber([10, 10, 10, 10, 20, 20, 20, 30, 50]))


Mille grazie a tutti i ragazzi che mi aiutano a capire di più su come risolvere questo problema. Dopo aver verificato le risposte nel post, mi viene in mente la mia soluzione.

Grazie a te ho capito che dovrei incrementare i alla fine di se per evitare un confronto ripetitivo.

function pairNumbers(arr) {
const sorted_arr = arr.sort();
const results = [];
for (let i = 0; i < sorted_arr.length; i++) {
if (sorted_arr[i] == sorted_arr[i + 1]) {
results.push(sorted_arr[i]);
i = i + 1; 
}

}
return results.length;
}
console.log(pairNumbers([10, 10, 10, 10, 20, 20, 20, 30, 50])) // 3

Se ho capito bene la domanda, questo può essere ulteriormente semplificato facendo affidamento inizialmente sull'ordinamento ...

Incrementa i nella posizione successiva dopo aver trovato la coppia e lascia che il ciclo for lo incrementi ancora una volta.

 function pairNumber(arr) {
    const sorted_arr = [...arr].sort(); // disallowing array mutation
    let cnt = 0;
    for (let i = 0; i < sorted_arr.length; i++) {
      if (sorted_arr[i + 1] === sorted_arr[i]) {
        cnt++;
        i = i + 1;
      }

    }
    return cnt;
  }
  console.log(pairNumber([10, 10, 10, 10, 10, 20, 20, 20, 20, 30, 30, 50]))
  // 5 --> 2 pairs of 10, 2 pairs of 20, 1 pair of 30
  console.log(pairNumbers([10, 10, 10, 10, 20, 20, 20, 30, 50])) 
  // 3 --> 2 pairs of 10 one pair of 20






javascript