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){
...