You can use Array#reduce and ES6 destructuring assignment.
// extract value and label property let res = options.reduce((obj, { value, label }) => { // define the propery value obj[label] = value; // return for next iteration return obj; // set initial value as an empty object }, {})
const options = [{ value: 'opt1', label: 'Lopt1' }, { value: 'opt2', label: 'Lopt2' }, { value: 'opt3', label: 'Lopt3' }, { value: 'opt4', label: 'Lopt4' } ]; let res = options.reduce((obj, { value, label }) => { obj[label] = value; return obj; }, {}) console.log(res);
Much more shortest by using ES6 spread syntax.
let res = options.reduce((obj, { value, label }) => ({ [label] : value, ...obj }), {});
Or
let res = options.reduce((obj, { value, label }) => (obj[label] = value, obj), {});
const options = [{ value: 'opt1', label: 'Lopt1' }, { value: 'opt2', label: 'Lopt2' }, { value: 'opt3', label: 'Lopt3' }, { value: 'opt4', label: 'Lopt4' } ]; let res = options.reduce((obj, { value, label }) => ({ [label]: value, ...obj }), {}); let res1 = options.reduce((obj, { value, label }) => (obj[label] = value, obj), {}); console.log(res, res1);