Parse containers

by matox

JavaScript

let containers = [
    {name: '10.10.10.12:/container 1', uuid: 'as213-asd-sadas2', free: 12312312},
    {name: '10.10.10.12:/container 2', uuid: 'as213-asd-sadas2', free: 12312312321},
    {name: '10.10.10.12:/container 3', uuid: 'as213-asd-sadas2', free: 12312123123},
    {name: '10.10.10.12:/container 4', uuid: 'as213-asd-sadas2', free: 1231212312},
    {name: '10.10.10.13:/container 1', uuid: 'as213-asd-sadas2', free: 121231232},
    {name: '10.10.10.13:/container 2', uuid: 'as213-asd-sadas2', free: 1231131212},
    {name: '10.10.10.13:/container 3', uuid: 'as213-asd-sadas2', free: 123121231232}
];

let clusters = [];
const delimiter = ':';

clusters = containers.map(container => {
	[clusterName, ] = container.name.split(delimiter);
	return { 
			i:clusters.length+1,
			name:clusterName,
			options:[]
	}
})

// remove duplicates
clusters = clusters.filter((el, i, arr) => arr.map(obj => obj['name']).indexOf(el['name']) === i);

containers.map(container => {
	[clusterName, containerName] = container.name.split(delimiter);
  container.name = containerName;
  
  clusters.filter(cluster => cluster.name === clusterName)[0].options.push(container)
});
console.table(clusters)