JSFiddle - React, Tailwind, and code Playground
Array Insert Order By Property
by skibulk
JavaScript
var data = [], prev = 0, next;
for (var i = 0; i < 1000000; i++) {
next = prev + Math.round(Math.random() * 1000) - 100;
data.push({
date: next
});
prev = next;
}
console.log(data.slice());
function trial1() {
function arrayInsertOrderByProperty(arr, obj, prop) {
if (arr.length > 0) {
for (var i = arr.length - 1; i >= 0; i--) {
if (obj[prop] >= arr[i][prop]) {
i++
break;
}
}
}
arr.splice(i, 0, obj);
}
var temp = [];
for (var i = 0; i < data.length; i++) {
arrayInsertOrderByProperty(temp, data[i], 'date');
}
//console.log(temp);
}
function trial2() {
function sortObjectsByKey(array, key) {
return array.sort(function(a, b) {
if(a[key] < b[key]) return -1;
if(a[key] > b[key]) return 1;
return 0;
});
}
var temp = [];
for (var i = 0; i < data.length; i++) {
temp.push(data[i]);
}
sortObjectsByKey(temp, 'date');
//console.log(temp);
}
function benchmark(callback, iterations) {
var before = new Date().getTime() / 1000;
for (var i = 0; i < iterations; i++) {
callback();
}
var after = new Date().getTime() / 1000;
var time = after - before;
console.log("Benchmark: " + time);
return time;
}
console.log("Ratio: " + (benchmark(trial1, 10) / benchmark(trial2, 10)));