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 Réponses :
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)
La première proposition est ce que je recherche. Merci beaucoup!
function GetObjects(input){
var output = [];
for(let key in input){
output.push(input[key][0]);
}
return output;
}
If I understand your question correctly
Cela fonctionne aussi, merci!
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);
il gérera également si votre premier objet n'est pas là.
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?