const arr = [
{
id: 'cd',
name: 'Clarice Dillard'
}, {
id: 'nb',
name: 'Noel Bond'
}, {
id: 'sd',
name: 'Sheree Dunn'
}
];
という形のオブジェクトをメンバーにもつ配列を
obj = {
cd: {
id: "cd",
name: "Clarice Dillard"
},
nb: {
id: "nb",
name: "Noel Bond"
},
sd: {
id: "sd",
name: "Sheree Dunn"
}
}
という感じのオブジェクトに変換したい、できるだけスッキリ書きたい、という話
例
const obj = arr.reduce(
(o, c) => Object.assign(o, {[c.id]: c}),
{}
)
Object Rest/Spread Propertiesを使ったver
もう少し短くかける
- Object Rest/Spread Properties
- babel-plugin-transform-object-rest-spreadとか、babel-preset-stage-3が入ってる環境
const obj = arr.reduce(
(o, c) => ({...o, [c.id]: c}),
{}
)
再び配列に戻したいとき
Object.keys()
、Array.map()
でいまのとこやってる
const arr2 = Object.keys(obj).map(k => obj[k])