JSFiddle - React, Tailwind, and code Playground
HTML
<pre id="output"></pre>
JavaScript
var myArray = new Array();
myArray["86"] = {"target_area" : { "name_area" : "Loic"}};
myArray["85"] = {"target_area" : { "name_area" : "aaaaaaaa"}};
myArray["81"] = {"target_area" : { "name_area" : "zzzzzzzzzz"}};
function sortToIndices(arr){
var occupiedIndices = [],
objectCollection = [];
for(var i = 0; i < arr.length; i++) {
if(arr[i] != null){ // You may want to make this condition more strict
occupiedIndices.push(i);
objectCollection.push(arr[i]);
}
};
objectCollection.sort(function(a, b) {
var nameA = a.target_area.name_area.toLowerCase(),
nameB = b.target_area.name_area.toLowerCase();
if (nameA < nameB) //sort string ascending
return -1;
if (nameA > nameB)
return 1;
return 0; //default return value (no sorting)
});
for (i = 0; i < occupiedIndices.length; i++) {
arr[occupiedIndices[i]] = objectCollection[i];
};
}
sortToIndices(myArray);
out(myArray["86"]); //Nothing
out(myArray["0"]); //Here the index has been changed
function out()
{
var args = Array.prototype.slice.call(arguments, 0);
document.getElementById('output').innerHTML += args.join(" ") + "\n";
}