title: How to convert array of objects to single object which has dynamic key in typescript
body: <p>This question might be similar to frequently asked one, but this one has some different approach. </p>
  
  <p>In my angular 7 application, I have the following 5 arrays which needs to be converted to the below single object with dynamic key based on the id.</p>
  
  <pre><code>{
    "enabled-41": true,
    "enabled-42": true,
    "enabled-43": true,
    "enabled-44": true,
    "enabled-45": false,
    "abc-41": "some description 1",
    "abc-42": "some description 12",
    "abc-43": "some description 123",
    "abc-44": "some description 1234",
    "abc-45": null,
    "def-41": "some description 2",
    "def-42": "some description 23",
    "def-43": "some description 234",
    "def-44": "some description 2345",
    "def-45": null,
    "type-41": "def",
    "type-42": "abc",
    "type-43": "def",
    "type-44": "abc",
    "type-45": null,
    "weight-41": "25",
    "weight-42": "25",
    "weight-43": "25",
    "weight-44": "25",
    "weight-45": null
  }
  </code></pre>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>let arr = [
    {
      "id": 41,
      "abc": "some description 1",
      "def": "some description 2",
      "type": "def",
      "Criteria": {
        "id": 5,
        "question": "follow-up",
        "definition": "definition content",
        "status": true
      },
      "weight": 25,
      "enabled": true
    },
    {
      "id": 42,
      "abc": "some description 12",
      "def": "some description 23",
      "type": "abc",
      "Criteria": {
        "id": 1,
        "question": "coverage",
        "definition": "definition content",
        "status": true
      },
      "weight": 25,
      "enabled": true
    },
    {
      "id": 43,
      "abc": "some description 123",
      "def": "some description 234",
      "type": "def",
      "Criteria": {
        "id": 4,
        "question": "Price",
        "definition": "definition content",
        "status": true
      },
      "weight": 25,
      "enabled": true
    },
    {
      "id": 44,
      "abc": "some description 1234",
      "def": "some description 2345",
      "type": "abc",
      "Criteria": {
        "id": 3,
        "question": "Exchange",
        "definition": "definition content",
        "status": true
      },
      "weight": 25,
      "enabled": true
    },
    {
      "id": 45,
      "Criteria": {
        "id": 2,
        "definition": "definition conent",
        "question": "Random",
        "status": true
      },
      "type": null,
      "abc": null,
      "def": null,
      "weight": 0,
      "enabled": false
    }
  ];
  
  let result = arr.reduce(function(obj, item) {
      obj[item] = item.value;
      return obj;
  }, {})
  
  console.log(result);</code></pre>
  </div>
  </div>
  </p>
  
  <p>I have tried using <strong>reduce</strong> function, but cannot able to get the right way to convert to a single object with the above format based on dynamic key (joining id with hypen).</p>
  
  <p>Can someone help me with this?</p>