Je cherche un moyen (en JavaScript) pour collecter un ensemble d'objets dans plusieurs tableaux, où chaque tableau contient un certain type d'objet, et les tableaux sont stockés en tant que valeurs dans un tableau associatif, les clés étant les les types. Par exemple:Qu'est-ce qu'un bon modèle JavaScript pour catégoriser les choses en types?
Entrée:
[<apple>, <cat>, <pear>, <mercedes>, <dog>, <ford>, <orange>]
Sortie:
{
'fruit': [<apple>, <pear>, <orange>],
'animal': [<cat>, <dog>],
'car': [<mercedes>, <ford>]
}
En ruby, vous pourriez faire ce qui suit:
things_by_type = {}
things.each do |thing|
(things_by_type[thing.type] ||= []) << thing
end
qui est agréable et concis.
Qu'est-ce qu'un bon motif pour faire la même chose en JavaScript qui est concis et efficace? Je pouvais faire quelque chose comme ça, mais ce n'est pas aussi agréable:
var thing, things_by_type = {};
for (var i = 0; i < things.length; i++) {
thing = things[i];
if(things_by_type[thing.type]) {
things_by_type[thing.type].push(thing);
} else {
things_by_type[thing.type] = [thing];
}
}
J'ai toujours pensé Javascript a besoin d'un '' || = opérateur. Dommage que vous ayez à taper tout deux fois. – galambalazs