Digamos que tengo un montón de SKU que se ven así:
{ id: '1234567', size: 'L', available: true, color: { id: 1234 }} { id: '1234588', size: 'XS', available: true, color: { id: 1234 }} { id: '1234568', size: 'M', available: true, color: { id: 1234 }} { id: '1234569', size: 'XL', available: true, color: { id: 1234 }} { id: '1234573', size: 'S', available: true, color: { id: 1234 }}También tengo una matriz de fuente de verdad que se parece a esto:
{ "1234": ["XS", "S", "M", "L", "XL", "XXL"] }
La aplicación actualmente está mapeando la matriz inicial de objetos en orden. Como puede ver, cada SKU tiene el identificador de color que es la clave para la matriz de verdad.
Normalmente, esto sería bastante simple de reorganizar. Aquí está el problema:
La fuente de la verdad solo devuelve los elementos disponibles. Entonces, suponiendo que el inventario de "1234" estuviera agotado en todo menos en "XXL", la respuesta sería ["XXL"] . Necesito que aparezcan todas las demás entradas (artículos en el SKU), solo que se tachen como agotados. Pero todos deben estar en orden .
En otras palabras, si recibo ["S", "M"] como el orden correcto, el resultado debería verse así:
{ id: '1234588', size: 'XS', available: true, color: { id: 1234 }} { id: '1234573', size: 'S', available: true, color: { id: 1234 }} { id: '1234568', size: 'M', available: true, color: { id: 1234 }} { id: '1234567', size: 'L', available: true, color: { id: 1234 }} { id: '1234569', size: 'XL', available: true, color: { id: 1234 }} Parece factible, pero cuanto más lo miro, menos posible parece. Tenga en cuenta también que el tamaño no está estrictamente limitado a las letras, sino que puede ser alfanumérico (30D) o simplemente numérico (43) o pueden ser palabras: "Tamaño completo", por lo que el ole .sort() no funcionará.