Потому что у меня есть что-то трудное и нужно откладывать :-) вот функция «mergeSortedArrays».
Он может принимать любое количество параметров, так что вы называете его как:
var resultSorted = mergeSortedArrays(resultA, resultB, resultC, resultD);
Это не так хорошо, как это могло быть, потому что она объединяет только два массива одновременно. Возможно, лучшая реализация одновременно объединит все массивы. (Я не уверен, как это было бы сравнить хотя)
Реализация:
function mergeSortedArrays() {
function merge(arrayOne, arrayTwo) {
var totalLength = arrayOne.length + arrayTwo.length;
var returnArray = new Array(totalLength);
var iResult = 0;
var iOne = 0;
var iTwo = 0;
for(var i = 0; i < totalLength; ++i) {
if(iTwo < arrayTwo.length) {
if(iOne >= arrayOne.length) {
returnArray[i] = arrayTwo[iTwo++];
} else if (arrayOne[iOne].date < arrayTwo[iTwo].date) {
returnArray[i] = arrayOne[iOne++];
} else {
returnArray[i] = arrayTwo[iTwo++];
}
} else {
returnArray[i] = arrayOne[iOne++];
}
}
return returnArray;
}
var sortedArray = [];
for(var i = 0; i < arguments.length; ++i) {
sortedArray = merge(sortedArray, arguments[i]);
}
return sortedArray;
}
Вот jsFiddle
я могу оставить скрипку с кодом, который генерирует и сортирует первые четыре списка, если это необходимо? – Aaron
Отправьте скрипку, пожалуйста. – OneOfOne
Также проверьте http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects?rq=1 – OneOfOne