Pregunta tan rápida. ¿Qué sucede si tiene dos matrices de objetos y le gustaría 'alinear' estas matrices de objetos para que pueda asegurarse de que los objetos de cada matriz estén en el orden de la otra matriz? ¿Qué pasa si no sabe qué claves y valores contiene alguno de los objetos dentro de las matrices ... y mucho menos en qué orden están?
Así que hay una 'Expresión comodín' para su [].filter, [].map, etc. ¿Cómo se obtiene una expresión comodín?
var jux = (function(){
'use strict';
function wildExp(obj){
var keysCrude = Object.keys(obj),
keysA = ('a["' + keysCrude.join('"], a["') + '"]').split(', '),
keysB = ('b["' + keysCrude.join('"], b["') + '"]').split(', '),
keys = [].concat(keysA, keysB)
.sort(function(a, b){ return a.substring(1, a.length) > b.substring(1, b.length); });
var exp = keys.join('').split(']b').join('] > b').split(']a').join('] || a');
return exp;
}
return {
sort: wildExp
};
})();
var sortKeys = {
k: 'v',
key: 'val',
n: 'p',
name: 'param'
};
var objArray = [
{
k: 'z',
key: 'g',
n: 'a',
name: 'b'
},
{
k: 'y',
key: 'h',
n: 'b',
name: 't'
},
{
k: 'x',
key: 'o',
n: 'a',
name: 'c'
}
];
var exp = jux.sort(sortKeys);
console.log('@juxSort Expression:', exp);
console.log('@juxSort:', objArray.sort(function(a, b){
return eval(exp);
}));
También puede usar esta función en una iteración para cada objeto para crear una mejor expresión colectiva para todas las claves en cada uno de sus objetos, y luego filtrar su matriz de esa manera.
Este es un pequeño fragmento de API Juxtapose que tengo casi completo, que hace esto, igualdad de objetos con exenciones, unidades de objetos y condensación de matrices. Si estas son cosas que necesita o desea para su proyecto, por favor comente y haré que la biblioteca sea accesible más temprano que tarde.
¡Espero que esto ayude! Feliz codificación :)