JSFiddle - React, Tailwind, and code Playground

by EwertonRSilveira

HTML

<pre id="output"></pre>

JavaScript

'use strict';


/********************
* Utility Functions
**********/
function addDummyData(list, name, desc) {		
	  for (var i = 0; i < 10000; i++) {
	    if(!list[i]){
  	    list.push((desc) ? new Descriptions(i*6, desc + i) : new Names(i*6, name + i));
	    };    	
  	};
}; 
function sortById(a, b) {      
  	if (a.id > b.id) {
	    return 1;
  	};
  	if (a.id < b.id) {
    	return -1;
  	};
  	return 0; //Equal
};
function Names(id, name, description) {
  return {
    id: parseInt(id),
    name: name
  };
};
function Descriptions(id, desc) {
  return {
    id: parseInt(id),
    description: desc
  };
};


/**************
* Vectors
**********/
const userNames = [
  new Names('1', 'james'),
  new Names('2', 'sarah'), 	//No description
  new Names('3', 'marco'),
  new Names('6', 'Kate'), 	//No description
  new Names('5', 'Mel'),
  new Names('4', 'silvio'), //No description
  new Names('7', 'Niti'), 	//No description
  new Names('16', 'Angela')
];
const userDescriptions = [
  new Descriptions('1', 'a-1'),
  new Descriptions('3', 'b-3'),
  new Descriptions('5', 'c-5'),
  new Descriptions('8', 'd-8'), 	//No match
  new Descriptions('13', 'e-13'), //No match
  new Descriptions('16', 'f-16'),
  new Descriptions('17', 'G-17'), //No match
  new Descriptions('66', 'H-66')
];


/**************
* Dummy data
**********/
addDummyData(userNames, 'names_');
addDummyData(userDescriptions, null, 'description_');


/**************
* Real logic
**********/
function mergeData(names, descriptions) {
  var end, start, result;
  start = new Date();

  var sortedList = descriptions
    .concat(names)
    .sort(sortById);
        
	for(var i = 0; i < sortedList.length; i++){
  	var current = sortedList[i];
    var next = sortedList[i + 1];
    
    //console.log('current', current);    
    if(next) {
        if(current.id === next.id) {          
        	if(next.description){
          	current.description = next.description;
          }else if(current.description){
         ...