Je demande de l'aide pour résoudre le problème de renommer les chaînes dans le tableau qui ressemble à ceci:Renommer les doublons dans un tableau JavaScript
["a(1)","a(6)","a","a","a","a","a","a","a","a","a","a"]
Après l'exécution de la fonction, il doit se présenter comme suit:
["a(1)","a(6)","a","a(2)","a(3)","a(4)","a(5)","a(7)","a(8)","a(9)","a(10)","a(11)"]
La matrice vide et la matrice exempte de doublons ne doivent pas être touchées.
Mon idée est de remplir un objet vide avec des paires clé/valeur et puis juste les pousser à un nouveau tableau:
function renameFiles(arr){
var itemsObj = {};
var count = 1;
for (var i = 0; i < arr.length; i++){
itemsObj[arr[i]] = count;
// if the key present, rename the array item and add it to the
// itemsObj
if (arr[i] in itemsObj){
itemsObj[arr[i] + '(' + (i - (i - 1)) + ')']
}
}
console.log(itemsObj)
// once the itmesObj is set, run the loop and push the keys to the
// array
return arr;
}
var array = ["a(1)","a(6)","a","a","a","a","a","a","a","a","a","a"]
renameFiles(array);
Le problème est que la itemsObj
est d'obtenir peuplé pas avec les clés de doublons. Il devrait y avoir une autre méthode qui peut gérer cette tâche. Je suis un débutant et probablement pas au courant de cette méthode.
Hmmm. vous apprenez quelque chose de nouveau chaque jour. Je ne savais pas que vous pourriez incrémenter à l'intérieur d'un opérateur ternaire. – Skam
@Skam - Vous pouvez incrémenter très bien, mais en vous appuyant sur le résultat de l'assigment, comme je le fais ci-dessus, vous devriez éviter dans de nombreux cas, du moins à mon avis. Je l'ai fait ici pour éviter tout le désordre du 'if/else' vérifiant des clefs etc., et je pense que c'est bien car il ne devrait y avoir aucun problème le faisant de cette façon * dans ce cas spécifique *! – adeneo
@adeneo Pourriez-vous expliquer cette ligne 'var c = x en nombre? count [x] = count [x] + 1: count [x] = 1; 'Je ne connais pas encore ce genre de style. – Yunielf