array_combine — 一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成する
ピコ太郎のPPAPがまんまそのイメージ。
つまりこういうのがやりたい:
const key = ['green', 'red', 'yellow'];
const val = ['avocado', 'apple', 'banana'];
↓
{"green":"avocado","red":"apple","yellow":"banana"}
今はこのように書ける:
const key2 = ['green', 'red', 'yellow'];
const val2 = ['avocado', 'apple', 'banana'];
const result2 = Object.assign(
...key2.map((key, i) => ({ [key]: val2[i] }))
);
もとはこの質問にあったソースで、
配列の中にある配列をオブジェクトに変換するにはどうしたらいいのか?というものだった。
const arr = [ [ 'cardType', 'iDEBIT' ],
[ 'txnAmount', '17.64' ],
[ 'txnId', '20181' ],
[ 'txnType', 'Purchase' ],
[ 'txnDate', '2015/08/13 21:50:04' ],
[ 'respCode', '0' ],
[ 'isoCode', '0' ],
[ 'authCode', '' ],
[ 'acquirerInvoice', '0' ],
[ 'message', '' ],
[ 'isComplete', 'true' ],
[ 'isTimeout', 'false' ] ];
const obj= Object.assign(...arr.map(([key, val]) => ({[key]: val})))
相手が配列ならreduceでも同じ結果は作れるんだけど、
arr.reduce((accu, [key, val]) => ({...accu, ...{[key]: val}}), {});
単純にObjectにしたい!!!っていうだけならassignの方が見やすくていいかなと思う。
reduceについては@ginpei_jpさんが書いた詳しい記事があるぞ。
See the Pen
PHP array_combine in Javascript by Tenderfeel (@Tenderfeel)
on CodePen.