var columnify = function (a,n) {
var result = [];
for (var i = 0, lastIndex = a.length - 1; i < lastIndex; i++)
result.push(a[i * n % (lastIndex)]);
result[lastIndex] = a[lastIndex];
return result;
}
var products = ["Boots",
"Eyewear",
"Gloves",
"Heated Gear",
"Helmet Accessories",
"Helmets",
"Jackets",
"Mechanic's Wear",
"Pants",
"Protection",
"Rainwear",
"Random Apparel",
"Riding Suits",
"Riding Underwear",
"Socks",
"Vests",]
columnify(products, 4)
["Boots", "Helmet Accessories", "Pants", "Riding Suits", "Eyewear", "Helmets", "Protection", "Riding Underwear", "Gloves", "Jackets", "Rainwear", "Socks", "Heated Gear", "Mechanic's Wear", "Random Apparel", "Vests"]
Примените эту функцию к уже отсортированному списку, и тогда он вернет список строк в том порядке (почти), который вы хотите. Затем добавьте список, который был возвращен для упорядоченного списка в DOM.
Кроме того, я не проверял ничего, кроме этого списка. Так что я бы сделал это на твоем месте. Из того, что я вижу, это работает, только если длина списка кратна n
. Не очень удачное решение, но для меня уже поздно, и я не могу потрудиться придумать что-нибудь получше.
РЕДАКТИРОВАТЬ: исправлена проблема с последним элементом