JSFiddle - React, Tailwind, and code Playground

by graphettion

JavaScript

let categories = [{
  "Items": [{
    "Citation": "tests",
    "Name": "Item 2",
    "RequireAttachment": true,
    "RequireCapa": true,
    "RequireComment": true
  }, {
    "Citation": null,
    "Name": "Item 1",
    "RequireAttachment": true,
    "RequireCapa": false,
    "RequireComment": true
  }],
  "Name": "Category 2"
}, {
  "Items": [{
    "Citation": "Test more",
    "Name": "Jim Test Item 2",
    "RequireAttachment": true,
    "RequireCapa": true,
    "RequireComment": true
  }],
  "Name": "Jim Test Category"
}]

// desired output [{Citation: "test"}, {Citation: null}, {citation: "Test more"}]
let citation = categories.flatMap(({ Items }) => Items.map(({ Citation }) => ({ Citation })))

console.log('citation', citation)

// merge with this dataset
let auditFormsReview = {
	formItemResponses: [{
  	category: "Category 2",
    comments: null,
    id: 1,
    name: "Item 2",
    response: null
  },
  {
    category: "Category 2",
    comments: null,
    id: 2,
    name: "Item 1",
    response: null
  },
  {
  	category: "Jim Test Category",
		comments: null,
		id: 3,
		name: "Jim Test Item 2",
		response: null
  }]
}

// desired output { formItemResponses: [{ category: "Category 2", comments: null, id: 1, name: "Item 2", response: null, citation: "test"}]
//let merge = Array.prototype.push.apply(auditFormsReview.formItemResponses, citation)
let merge = auditFormsReview.formItemResponses.map((item, i) => Object.assign({}, item, citation[i]));

console.log('auditFormsReview', merge)