J'essaie de convertir un tableau qui contient des objets en un seul objet où la clé est "page" et la valeur est "has_access". Je pourrais donc y accéder plus tard avec has_access.about par exemple.
Y a-t-il une seule ligne de code qui pourrait y parvenir?
J'ai essayé mais cela me rend le tableau d'origine.
has_access: { home: 1 about: 0 profile: 1 }
Voici le tableau source que je voudrais convertir
[ { "id": 215, "page": "home", "has_access": 1, }, { "id": 216, "page": "about", "has_access": 0, }, { "id": 217, "page": "profile", "has_access": 1, } ]
Résultat souhaité:
var myData = Object.keys(data).map(key => { return data[key]; })
4 Réponses :
Ceci peut être réalisé avec la méthode reduction ()
, via ce qui suit:
const array = [ { "id": 215, "page": "home", "has_access": 1, }, { "id": 216, "page": "about", "has_access": 0, }, { "id": 217, "page": "profile", "has_access": 1, } ]; const result = array.reduce((acc, i) => ({ ...acc, [ i.page ] : i.has_access }), {}); console.log(result);
Vous pouvez obtenir l'objet résultant en utilisant .reduce ()
:
const data = [ {"id": 215, "page": "home", "has_access": 1}, {"id": 216, "page": "about", "has_access": 0}, {"id": 217, "page": "profile", "has_access": 1} ]; const has_access = data.reduce((r, c) => (r[c.page] = c.has_access, r), {}); console.log(has_access);
Vous pouvez utiliser réduire
pour parcourir l'objet et utiliser Object.assign
pour mettre à jour l'accumulateur,
var data = [{"id":215,"page":"home","has_access":1},{"id":216,"page":"about","has_access":0},{"id":217,"page":"profile","has_access":1}]; var result = data.reduce((c, v) => Object.assign(c, {[v.page]: v.has_access}), {}); console.log(result);
C'est facile - spécifiez la clé et la valeur, puis utilisez map
et reduce
:
const a = [{ "id": 215, "page": "home", "has_access": 1 }, { "id": 216, "page": "about", "has_access": 0 }, { "id": 217, "page": "profile", "has_access": 1 } ]; const value = "has_access"; const key = "page"; const res = { [value]: a.map(o => [o[key], o[value]]).reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}) } console.log(res);