Vous ne pouvez pas avoir votre gâteau et le manger aussi.
Vous ne pouvez pas avoir un tableau clairsemé (seules certaines valeurs sont remplies) et n'ont pas de valeurs indéfinies entre les deux. Ce n'est pas comme ça que fonctionnent les tableaux javascript. En outre, vous pouvez supprimer les éléments qui ont des valeurs indéfinies et attendre que les autres valeurs restent au même index. Par définition, en supprimant ces autres valeurs, réduit le tableau (en changeant les index). Peut-être que si vous pouvez décrire ce que vous essayez vraiment d'accomplir, nous pouvons trouver une meilleure façon d'aborder le problème.
Je pense que ce que vous voulez est un tableau d'objets où chaque objet du tableau a un index et une valeur. Les index sur les objets dans le tableau ne changeront jamais, mais le tableau conteneur peut être trié par ces index.
var mySortedArray = [
{index:15, value: 2},
{index:6323, value: 1},
{index:349022, value: 3}
];
mySortedArray = myArray.sort(function(a, b) {a.value - b.value});
Maintenant vous avez un tableau trié qui est trois éléments long et c'est réglé par la valeur et l'indice d'origine est conservée et disponible.
Le seul inconvénient est que vous ne pouvez pas y accéder facilement par l'index. Si vous vouliez avoir à la fois un accès ordonné et trié et un accès par la clé d'index, vous pouvez créer une structure de données parallèle qui permette un accès rapide aux clés. En Javascript, il n'y a pas de structure de données unique qui supporte à la fois l'accès par clé et l'accès par ordre trié.
Si vous voulez construire une structure de données en parallèle qui soutiendrait l'accès rapide par clé (et inclurait la valeur et la valeur sortOrder, vous pourriez construire un tel objet comme celui-ci:
// build a parallel data structure for keyed access
var myKeyedObject = {}, temp, item;
for (var i = 0; i < mySortedArray.length; i++) {
item = mySortedArray[i];
temp = {};
temp.value = item.value;
temp.index = item.index;
temp.sortOrder = i;
myKeyedObject[item.index] = temp;
}
Mais les valeurs comprises entre '15' et' 6323' 'undefined' ne sont-elles pas? Et que voulez-vous dire par «supprimer» dans ce contexte? – Blender