ES6以上が対象です。
概要
例えばslackのchannel一覧など、同じ構造の連想配列が配列として帰ってくる場合があります。
[
{
id: '2',
name: 'hoge',
...,
},
{
id: '5',
name: 'fuga',
...,
},
{
id: '0',
name: 'foo',
...,
}
];
このときに、あるname
は存在するか、対応するid
は何かを知りたい場合、一々配列を全部調べる必要があります。
なので、この配列から必要な部分を取り出して連想配列にします。結果として、以下のような連想配列を得ます。
{hoge: "2", fuga: "5", foo: "0"}
方法
reduceを使います。
reduceは左の要素から順に関数を適用できるので、それぞれの要素ごとにnameをkey、idをvalueとして代入してます。
const array = [
{
id: '2',
name: 'hoge'
},
{
id: '5',
name: 'fuga'
},
{
id: '0',
name: 'foo'
}
];
const result = array.reduce((ary, {id, name}) => {
ary[name] = id;
return ary;
}, {});
console.log(result); // {hoge: "2", fuga: "5", foo: "0"}
ary[name] = id;
をary[id] = name;
とすると、idからnameが検索できるようになります。