1
votes

Comment extraire tous les premiers objets d'un objet de tableau?

Je fais une requête axios comme celle-ci:

{
    "Apple": [
        {
            "id": 26,
            "name": "Apple",
            "date_in": "2020-07-01"
        },
        {
            "id": 23,
            "name": "Apple",
            "date_in": "2020-06-01"
        }
    ],
    "Cherry": [
        {
            "id": 24,
            "name": "Cherry",
            "date_in": "2020-06-01"
        }
    ],
    "Banana": [
        {
            "id": 25,
            "name": "Banana",
            "date_in": "2020-06-01"
        }
    ]
}

Elle renvoie une réponse avec ces données:

async get() {
  await this.$axios.get(`my_api_url`)
    .then(response => {
       this.data = response.data;
     }).catch(() => { console.log('error') })
 },

Je voudrais être capable de parcourir cet objet et de ne conserver que le premier objet de chaque table. Ensuite, placez les objets sélectionnés dans un nouveau tableau.

Est-il possible de faire cela?


3 commentaires

Quel est le code que vous avez essayé jusqu'à présent. Où avez-vous rencontré des difficultés dans votre code? Veuillez publier vos efforts jusqu'à présent.


Quel est le résultat attendu?


Object.fromEntries (Object.entries (données) .map (([k, v]) => [k, v.sl‌ ice (0,1)]))? Vous mentionnez une table, ne pouvez-vous pas simplement configurer l'accessoire pour ne montrer qu'un seul élément?


3 Réponses :


1
votes

Comme ça?

.as-console-wrapper{min-height:100%;}
const src = {"Apple":[{"id":26,"name":"Apple","date_in":"2020-07-01"},{"id":23,"name":"Apple","date_in":"2020-06-01"}],"Cherry":[{"id":24,"name":"Cherry","date_in":"2020-06-01"}],"Banana":[{"id":25,"name":"Banana","date_in":"2020-06-01"}]},

      resultObj = Object.entries(src).reduce((r,[key,[o]]) => 
        (r[key] = o,r),{})


console.log(resultObj)

Ou, comme ça?

.as-console-wrapper{min-height:100%;}
const src = {"Apple":[{"id":26,"name":"Apple","date_in":"2020-07-01"},{"id":23,"name":"Apple","date_in":"2020-06-01"}],"Cherry":[{"id":24,"name":"Cherry","date_in":"2020-06-01"}],"Banana":[{"id":25,"name":"Banana","date_in":"2020-06-01"}]},

      resultArr = Object.values(src).map(([o]) => o)

console.log(resultArr)


1 commentaires

La première proposition est ce que je recherche. Merci beaucoup!



2
votes
function GetObjects(input){
    var output = [];
    for(let key in input){
        output.push(input[key][0]);
    }
    return output;
}
If I understand your question correctly

1 commentaires

Cela fonctionne aussi, merci!



1
votes

Vous pouvez obtenir les résultats tels que:

const data = {
    "Apple": [
        {
            "id": 26,
            "name": "Apple",
            "date_in": "2020-07-01"
        },
        {
            "id": 23,
            "name": "Apple",
            "date_in": "2020-06-01"
        }
    ],
    "Cherry": [
        {
            "id": 24,
            "name": "Cherry",
            "date_in": "2020-06-01"
        }
    ],
    "Banana": [
        {
            "id": 25,
            "name": "Banana",
            "date_in": "2020-06-01"
        }
    ]
}

const results = Object.keys(data).filter(item => data[item][0]).map(item => data[item][0]);
console.log(results);


1 commentaires

il gérera également si votre premier objet n'est pas là.