JSFiddle - React, Tailwind, and code Playground

by brandondurham

JavaScript

const fields = {
	basicInformation: [
		{
			label: 'First or Preferred Name',
			name: 'firstName',
			required: true,
			type: 'text',
		},
		{
			label: 'Last Name',
			name: 'lastName',
			required: true,
			type: 'text',
		},
		{
			icon: 'mail',
			label: 'Email',
			name: 'email',
			required: true,
			type: 'email',
		},
	],
	shippingAddress: [
		{
			label: 'Shipping Address',
			name: 'shippingAddress',
			required: true,
			type: 'address',
		},
		{
			label: 'Address 2',
			name: 'shippingAddress2',
			required: false,
			type: 'text',
		},
	],
};

const validFields = ['email', 'lastName', 'shippingAddress'];

console.log('ENTRIES');
console.log(
	Object.entries(fields)
  		.map( // loop through each group and return 
        	([key, value]) => value
            	.filter(field => field.required)
                .map(field => field.name)
                .every(v => validFields.includes(v)) && key
        ).filter(Boolean)
);