Retour de retour JavaScript d'objet imbriqué et organiser des types similaires
J'ai des objets p> Je souhaite créer une gamme d'objet imbriqué à partir de ce tableau attendu: p> Je cherche une fonction à ajouter à la carte une par une à la fois p> Aussi une fonction Supprimer : p> function addtoArray(collection, object) {
if (!collection[object.category]) {
collection[object.category] = [object];
return;
}
if (collection[object.category].includes(object)) return;
collection[object.category].push(object);
}
function removeFromArray(collection, object) {
if (!collection[object.category]) return;
var index = collection[object.category].indexOf(object);
if (index === -1) return;
collection[object.category].splice(index, 1);
if (!collection[object.category].length) delete
collection[object.category];
}
var obj1 = { categoryId: 1, category: "Fruits", name:"Orange" },
obj2 = { categoryId: 1, category: "Fruits", name:"Apple" },
obj3 = { categoryId: 2, category: "Vegetables", name:"Onion" },
obj4 = { categoryId: 2, category: "Vegetables", name:"Ginger" },
collection = {};
3 Réponses :
Fonction pour ajouter au tableau:
var arr=[];
const addToArray=(arr,obj)=>{
const index=findByName(arr,obj.category);
if(index>-1){
arr[i].values.push(obj)
}else{
arr.push({
name:obj.category,
values:[obj]
})
}
}
const findByName=(arr,name)=>{
for(var i=0;i<arr.length;i++){
if(arr[i].name===name)
return i;
}
return -1;
}
addToArray(arr,obj1)
Merci frère cela aide
Puisque vous faites diverses recherches sur vos données, la matrice n'est pas la solution recommandée. Vous aurez besoin de la traverser à chaque fois que vous aimeriez sortir un objet. Au lieu de cela, utilisez une classe avec des aides.
La première étape consiste à ajouter des identifiants uniques à vos données: p> La deuxième partie est la création d'une classe pour contenir ces données et Permettez-vous de le manipuler: P> const collection = new MyCollection();
collection.add(obj1);
collection.add(obj2);
collection.add(obj3);
collection.removeGroup("Fruits");
collection.items; // {2: { id: 2, categoryId:2, category:"Vegetables", name:"Onion"} }
//or should you desire to return an array
collection.toArray(); // [{ id: 2, categoryId:2, category:"Vegetables", name:"Onion"}]
Buddy, j'ai besoin de revenir en tant que tableau d'objet. Je veux dire tout ce que vous avez fait dans un objet comment je peux le faire?
J'ai édité ma réponse pour inclure un .toarray () code> méthode que vous pouvez utiliser.
La structure doit-elle être comme celle que vous avez montrée ci-dessus? À mon avis, une structure suivante serait beaucoup plus propre: avec cette structure, votre code ressemblerait à ceci: p> {
Fruits: [
{ categoryId: 1, category: 'Fruits', name: 'Orange' },
{ categoryId: 1, category: 'Fruits', name: 'Apple' }
],
Vegetables: [
{ categoryId: 2, category: 'Vegetables', name: 'Onion' },
{ categoryId: 2, category: 'Vegetables', name: 'Ginger' }
]
}
{
Fruits: [
{ categoryId: 1, category: 'Fruits', name: 'Orange' }
],
Vegetables: [
{ categoryId: 2, category: 'Vegetables', name: 'Onion' },
{ categoryId: 2, category: 'Vegetables', name: 'Ginger' }
]
}
Ni je cherche cette structure