JSFiddle - React, Tailwind, and code Playground
JavaScript
var texture1 = {name:"tex1"};
var texture2 = {name:"tex2"};
var texture3 = {name:"tex3"};
var meshes = [
{name: "Mesh 0", texture: texture1},
{name: "Mesh 1", texture: texture2},
{name: "Mesh 2", texture: texture3},
{name: "Mesh 3", texture: texture3},
{name: "Mesh 4", texture: texture2},
{name: "Mesh 5", texture: texture1},
{name: "Mesh 6", texture: texture1},
{name: "Mesh 7", texture: texture2},
{name: "Mesh 8", texture: texture3},
{name: "Mesh 9", texture: texture1}
];
var textureSortOrder = [texture1, texture2, texture3];
var sortMap = new WeakMap();
for (var i=0;i<textureSortOrder.length;i++) {
sortMap.set(textureSortOrder[i], i);
}
meshes = meshes.sort(function(a, b){
var indexA = sortMap.get(a.texture);
var indexB = sortMap.get(b.texture);
if (indexA < indexB) {
return -1;
} else if (indexA > indexB) {
return 1;
} else {
return 0;
}
});
console.log("sorted:");
for (var i=0;i<meshes.length;i++) {
console.log(i, meshes[i].texture.name);
}