Alors, question rapide. Que se passe-t-il si vous avez deux tableaux d'objets et que vous souhaitez "aligner" ces tableaux d'objets afin de vous assurer que les objets de chaque tableau sont dans le même ordre que ceux de l'autre tableau ? Et si vous ne savez pas quelles clés et quelles valeurs contiennent les objets à l'intérieur des tableaux... Et encore moins dans quel ordre ils se trouvent ?
Vous avez donc besoin d'une "expression joker" pour votre [].filter
, [].map
etc. Comment obtenir une expression joker ?
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);
}));
Vous pouvez également utiliser cette fonction sur une itération pour chaque objet afin de créer une meilleure expression collective pour toutes les clés de chacun de vos objets, puis filtrer votre tableau de cette façon.
Il s'agit d'un petit extrait de l'API Juxtapose que j'ai presque terminé, qui fait cela, l'égalité des objets avec des exemptions, les unités d'objets, et la condensation des tableaux. Si ce sont des choses dont vous avez besoin ou que vous voulez pour votre projet, veuillez commenter et je rendrai la librairie accessible le plus tôt possible.
J'espère que cela vous aidera ! Bon codage :)
0 votes
Par recherche, vous voulez dire filtre ?
0 votes
Recherche != filtre. Lequel voulez-vous ?