Domanda così veloce. Cosa succede se si hanno due array di oggetti e si desidera "allineare" questi array di oggetti in modo da poter assicurarsi che gli oggetti di ogni array siano nell'ordine dell'altro array? E se non sapessi quali chiavi e valori contengono gli oggetti all'interno degli array ... e ancor meno in quale ordine si trovano?
Quindi è necessario un 'espressione jolly' per il vostro [].filter, [].mapecc Come si ottiene un espressione wild card?
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);
}));
Puoi anche utilizzare questa funzione su un'iterazione per ogni oggetto per creare un'espressione collettiva migliore per tutte le chiavi in ciascuno dei tuoi oggetti, quindi filtrare l'array in questo modo.
Questo è un piccolo frammento dell'API Juxtapose che ho quasi completo, che fa questo, uguaglianza degli oggetti con esenzioni, unità di oggetti e condensazione di array. Se queste sono cose di cui hai bisogno o desideri per il tuo progetto, ti preghiamo di commentare e renderò la libreria accessibile il prima possibile.
Spero che sia di aiuto! Buona codifica :)