У меня есть три отсортированных массива, например ниже
[{name:"a"}, {name:"b"}, {name:"m"}, {name:"x"}]
[{name:"a"}, {name:"e"}, {name:"i"}, {name:"o"}]
[{name:"g"}, {name:"h"}, {name:"m"}, {name:"n"}]
Эти массивы сортируются на основе свойства имени каждого объекта в массиве. Вот метод, который я преобразовал из Java, чтобы объединить два отсортированных массива
function mergeSorted(a, b) {
var answer = new Array(a.length + b.length), i = 0, j = 0, k = 0;
while (i < a.length && j < b.length) {
if (a[i].name < b[j].name) {
answer[k] = a[i];
i++;
}else {
answer[k] = b[j];
j++;
}
k++;
}
while (i < a.length) {
answer[k] = a[i];
i++;
k++;
}
while (j < b.length) {
answer[k] = b[j];
j++;
k++;
}
return answer;
}
Вот рабочая скрипка с двумя массивами http://jsfiddle.net/euRn5/. Каков наилучший подход для достижения такого же числа с n количеством массивов, мысль, которую я имею в виду в настоящее время, берет один за другим, объединять ее с ранее объединенным до последнего элемента, например n + = i. Это лучший подход?