JSFiddle - React, Tailwind, and code Playground

by de Montalembert Jonathan

JavaScript

const input = [{
    label: "Account Name",
    value: "Jon IceCream",
    isMulti: false
  },
  {
    label: "Account Number",
    value: "1",
    isMulti: true
  }, {
    label: "Account Number",
    value: "10203050",
    isMulti: true
  }, {
    label: "Account Number",
    value: "020",
    isMulti: true
  },
  {
    label: "Bank Location",
    value: "S_BANSI",
    isMulti: false
  },
]

const output = {
  "Account Name": "Jon IceCream",
  "Account Number": "110203050020",
  "Bank Location": "S_BANSI"
};

const transform = (input) => {
  return input.reduce((acc, val) => {

    if (val.isMulti) {
      if (acc[val.label]) {
        return {
          ...acc,
          [val.label]: acc[val.label] + val.value
        }
      } else {
        return {
          ...acc,
          [val.label]: val.value
        }
      }
    } else {
      return {
        ...acc,
        [val.label]: val.value
      }
    }
  }, {})

}

const actual = transform(input)

console.log(actual, output)

console.log(Object.entries(actual).map(([k, v]) => ({label: k, value: v})))