zymr-keshav
6/26/2018 - 6:35 AM

javascript array

javascript array


const dataset = [
	{
		detail: {
			team: [
				{ name: 'alpha', game: 1 },
				{ name: 'beta', game: 1 },
				{ name: 'gamma', game: 1 },
				{ name: 'delta', game: 1 },
				{ name: 'echo', game: 1 }
			]
		}
	},
	{
		detail: {
			team: [
				{ name: 'alpha', game: 2 },
				{ name: 'beta', game: 2 },
				{ name: 'echo', game: 2 },
				{ name: 'gamma', game: 2 },
				{ name: 'delta', game: 2 }
			]
		}
	},
	{
		detail: {
			team: [
				{ name: 'echo', game: 1 },
				{ name: 'delta', game: 0 },
				{ name: 'beta', game: 0 },
				{ name: 'gamma', game: 0 },
				{ name: 'alpha', game: 0 }
			]
		}
	},
	{
		detail: {
			team: [
				{ name: 'delta', game: 0 },
				{ name: 'echo', game: 0 },
				{ name: 'beta', game: 0 },
				{ name: 'gamma', game: 1 },
				{ name: 'alpha', game: 0 }
			]
		}
	},
	{
		detail: {
			team: [
				{ name: 'delta', game: 0 },
				{ name: 'echo', game: 0 },
				{ name: 'alpha', game: 2 },
				{ name: 'gamma', game: 3 },
				{ name: 'beta', game: 2 }
			]
		}
	},
	{
		detail: {
			team: [
				{ name: 'delta', game: 0 },
				{ name: 'echo', game: 1 },
				{ name: 'beta', game: 0 },
				{ name: 'gamma', game: 2 },
				{ name: 'alpha', game: 0 }
			]
		}
	}
];

const rearrange = (input) => {
	console.log('input: ', input);
	const flat =
		input.reduce((acc, object) => {
			object.team.forEach((app) => {
				let name = app.name;
				acc[name] = acc[name] || [];
				acc[name].push(app.game);
			});
			return acc;
		}, {});
	// console.log(flat);
	const entries = Object.entries(flat);
	// console.log(entries);
	let output = entries.map(([label, data]) => ({ label, data }));
	console.log(output);
	return output;
}


const input = dataset.map((ds) => ds.detail);
//console.log(z);
const chartdata = rearrange(input);
console.log('chartdata: ', chartdata);

let desiredData = [
	{
		label: 'alpha',
		data: [1, 2, 0, 0, 2, 0]
	},
	{
		label: 'beta',
		data: [1, 2, 0, 0, 2, 0]
	},
	{
		label: 'gamma',
		data: [1, 2, 0, 1, 3, 2]
	},
	{
		label: 'delta',
		data: [1, 2, 0, 0, 0, 0]
	},
	{
		label: 'echo',
		data: [1, 2, 1, 0, 0, 1]
	}
];