Ho due arrayconfrontare due matrici e rimuovere i valori unici
ordered = [1, 2, 3, 4, 5]
some_list = [2, 6, 4]
Vorrei confrontare le due matrici, quindi trovare i duplicati, e la forma in un nuovo array. Il trucco consiste nel mantenere la matrice nell'ordine fornito nell'array ordered
.
new_array = [2, 4] # Result should be this
Ho pensato a un modo per farlo, tuttavia penso che le prestazioni possano essere migliorate.
ordered.each do |value1|
some_list.include? value1
new_array << value1
end
end
C'è un modo per migliorare questo?
Risultati Benchmark
user system total real
using & 0.210000 0.000000 0.210000 ( 0.212070)
using select 0.220000 0.000000 0.220000 ( 0.218889)
Ecco la sintassi ben terso, ma si è issato in codice ottimizzato rispetto al suo ciclo, o finirà per essere la velocità equivalente, ma ancora più bello di digitare? –
Sono in esecuzione benchmark per confrontare i due mentre parlo ... – jason328
questa risposta non manterrà l'ordine. L'ho aggiornato a 'new_arry = ordered & some_list' in modo che mantenga l'ordinamento definito nell'array' ordered'? l'ordine degli elementi nel nuovo array dipende dal primo array. –