Find unique array values (v2)

Revision 2 of this benchmark created on


Setup

/* 
  Array of 535 players, 119 are uniques.
  Generated with ChatGPT
*/


const players = ["Ronaldo", "Messi", "Neymar", "Lewandowski", "De Bruyne", "Mbappé", "Haaland", "Kane", "Salah", "Benzema", "Modric", "Mané", "Firmino", "Sterling", "Foden", "Silva", "Kimmich", "Gnabry", "Neuer", "Dias", "Fernandes", "Rashford", "Van Dijk", "Alisson", "Robertson", "Alexander-Arnold", "Henderson", "Thiago", "Müller", "Sané", "Goretzka", "Hummels", "Reus", "Werner", "Havertz", "Kanté", "Ziyech", "Mount", "Chilwell", "Lukaku", "Immobile", "Insigne", "Mertens", "Hazard", "Asensio", "Casemiro", "Isco", "Kroos", "Courtois", "Bale", "Benzia", "Alba", "Busquets", "De Jong", "Lenglet", "Pedri", "Dest", "Piqué", "Fati", "Ter Stegen", "Aubameyang", "Özil", "Lacazette", "Partey", "Ramsdale", "Xhaka", "Bellerín", "Tierney", "McTominay", "Fernandez", "Almiron", "Salisu", "Ward-Prowse", "Ings", "Adams", "Bertrand", "Højbjerg", "Kane", "Son", "Lloris", "Reguilón", "Rodri", "Dzeko", "Pellegrini", "Ibrahimovic", "Kessié", "Donnarumma", "Roma", "Lazzari", "Lukaku", "Eriksen", "Immobile", "Milinković-Savić", "Vidal", "Džemaili", "Chiellini", "Dybala", "Morata", "Cuadrado", "Kulusevski", "Lautaro", "Hakimi", "Barella", "Skriniar", "Handanović", "Laporte", "García", "Mahrez", "Bernardo", "Jesus", "Ederson", "Cancelo", "Dias", "Gündoğan", "Torres", "Fernandinho", "Stones", "Mendy", "Rodrigo", "Neto", "Fati", "Coutinho", "Pjanic", "Busquets", "Trincão", "Roberto", "Dest", "Umtiti", "Braithwaite", "Ter Stegen", "Griezmann", "Messi", "Ramos", "Benzema", "Kroos", "Casemiro", "Modric", "Mendy", "Courtois", "Hazard", "Valverde", "Vázquez", "Asensio", "Varane", "Carvajal", "Nacho", "Isco", "Jovic", "Militao", "Vinícius", "Marcelo", "Alaba", "Lewandowski", "Neuer", "Kimmich", "Gnabry", "Müller", "Sané", "Goretzka", "Hummels", "Reus", "Werner", "Havertz", "Kanté", "Ziyech", "Mount", "Chilwell", "Lukaku", "Immobile", "Insigne", "Mertens", "Hazard", "Asensio", "Casemiro", "Isco", "Kroos", "Courtois", "Bale", "Benzia", "Alba", "Busquets", "De Jong", "Lenglet", "Pedri", "Dest", "Piqué", "Fati", "Ter Stegen", "Aubameyang", "Özil", "Lacazette", "Partey", "Ramsdale", "Xhaka", "Bellerín", "Tierney", "McTominay", "Fernandez", "Almiron", "Salisu", "Ward-Prowse", "Ings", "Adams", "Bertrand", "Højbjerg", "Kane", "Son", "Lloris", "Reguilón", "Rodri", "Dzeko", "Pellegrini", "Ibrahimovic", "Kessié", "Donnarumma", "Roma", "Lazzari", "Lukaku", "Eriksen", "Immobile", "Milinković-Savić", "Vidal", "Džemaili", "Chiellini", "Dybala", "Morata", "Cuadrado", "Kulusevski", "Lautaro", "Hakimi", "Barella", "Skriniar", "Handanović", "Laporte", "García", "Mahrez", "Bernardo", "Jesus", "Ederson", "Cancelo", "Dias", "Gündoğan", "Torres", "Fernandinho", "Stones", "Mendy", "Rodrigo", "Neto", "Fati", "Coutinho", "Pjanic", "Busquets", "Trincão", "Roberto", "Dest", "Umtiti", "Braithwaite", "Ter Stegen", "Mbappé", "Neymar", "Di María", "Navas", "Paredes", "Marquinhos", "Verratti", "Herrera", "Danilo", "Kean", "Florenzi", "Draxler", "Diallo", "Kimpembe", "Icardi", "Mendy", "Sterling", "De Bruyne", "Grealish", "Mahrez", "Foden", "Rodri", "Cancelo", "Stones", "Dias", "Ederson", "Gundogan", "Bernardo", "Aguero", "Silva", "Zinchenko", "Walker", "Jesus", "Laporte", "Martial", "Rashford", "Fernandes", "Pogba", "Greenwood", "Cavani", "Sancho", "Shaw", "Wan-Bissaka", "Varane", "Lindelof", "Maguire", "De Gea", "Fred", "McTominay", "Dalot", "Bailly", "James", "Henderson", "Alisson", "Firmino", "Salah", "Mané", "Van Dijk", "Fabinho", "Jota", "Matip", "Robertson", "Henderson", "Thiago", "Milner", "Keita", "Alexander-Arnold", "Gomez", "Klostermann", "Upamecano", "Mukiele", "Olmo", "Sabitzer", "Nkunku", "Forsberg", "Gulacsi", "Henrichs", "Adams", "Kampl", "Orban", "Laimer", "Sørloth", "Hwang", "Mbokani", "Vanaken", "Vormer", "De Ketelaere", "Lang", "Dost", "Cuesta", "Martínez", "Tagliafico", "Alvarez", "Klaassen", "Tadic", "Berghuis", "Halland", "Reyna", "Bellingham", "Hummels", "Can", "Haaland", "Sancho", "Meunier", "Brandt", "Guerreiro", "Witsel", "Hitz", "Akanji", "Moreno", "Trigueros", "Capoue", "Yeremi Pino", "Gomez", "Chukwueze", "Foyth", "Albiol", "Pau Torres", "Pedraza", "Alcacer", "Griezmann", "Depay", "Dembele", "Lenglet", "Pique", "De Jong", "Busquets", "Roberto", "Dest", "Alba", "Neto", "Ter Stegen", "Benzema", "Hazard", "Kroos", "Modric", "Casemiro", "Asensio", "Rodrygo", "Valverde", "Vázquez", "Courtois", "Militao", "Alaba", "Carvajal", "Nacho", "Varane", "Mendy", "Marcelo", "Isco", "Vinicius Jr.", "Aouar", "Paqueta", "Depay", "Dubois", "Lopes", "Denayer", "Di María", "Neymar", "Mbappé", "Marquinhos", "Herrera", "Verratti", "Gueye", "Wijnaldum", "Navas", "Ramos", "Carvajal", "Militao", "Valverde", "Asensio", "Rodrygo", "Llorente", "Giménez", "Trippier", "Savic", "Felipe", "Lodi", "Koke", "Lemar", "Carrasco", "Luis Suarez", "João Félix", "Oblak", "Griezmann", "Pjanic", "Miralem", "De Ligt", "Alex Sandro", "Chiesa", "Cuadrado", "Morata", "Bernardeschi", "Ramsey", "Ronaldo", "Kulusevski", "Bonucci", "Szczesny", "Donnarumma", "Kessie", "Leão", "Rebic", "Tomori", "Hernandez", "Romagnoli", "Calabria", "Bennacer", "Diaz", "Tonali", "Saelemaekers", "Ibrahimovic", "Messi", "Busquets", "Pedri", "Griezmann", "Coutinho", "Araujo", "Piqué", "Roberto", "Ter Stegen", "Mingueza", "Alba", "Dest", "Lenglet", "Umtiti", "Garcia", "Neto", "Braithwaite", "De Jong", "Laporte", "Cancelo", "Dias", "Walker", "Mendy", "Foden", "Grealish", "Rodri", "De Bruyne", "Mahrez", "Bernardo", "Sterling", "Jesus", "Aguero", "Silva", "Zinchenko", "Ederson", "Ake", "Stones", "Gundogan", "Laporte", "Cancelo", "Dias", "Walker", "Mendy", "Foden", "Grealish", "Rodri", "De Bruyne", "Mahrez", "Bernardo", "Sterling", "Jesus", "Aguero", "Silva", "Zinchenko", "Ederson", "Ake", "Stones", "Gundogan", "Laporte", "Cancelo", "Dias", "Walker", "Mendy", "Foden", "Grealish", "Rodri" ];

Test runner

Ready to run.

Testing in
TestOps/sec
indexOf and lastIndexOf
const uniqueArray = players.filter(function(item) {
  return players.lastIndexOf(item) == players.indexOf(item);
});
ready
Object keys
const obj = {};

players.forEach((item) => {
  obj[item] = (typeof obj[item] === 'undefined')? 1 : ++obj[item];
});

uniqueArray = Object.entries(obj).filter((item) => {
  return item[1] === 1;
});
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.