То, что я пытаюсь сделать, это переупорядочить многомерный массив на основе длин каждого из его массивов, от самого высокого до самого низкого.JS: Сортировка многомерного массива на основе длины каждого поддиапазона
var array0 = [9, 7, 1]
var array1 = [2]
var array2 = [20, 3, 8, 11]
var array3 = [0, 6];
var multi = [array0, array1, array2, array3];
var multiLengths = [];
$(multi).each(function(i) { // for loop using jQuery
multiLengths.push(this.length);
});
// multiLengths: 3,1,4,2
function sortDesc(a,b) { //sort in descending order
return b - a;
}
multiLengths.sort(sortDesc);
// somehow re-order multi to be: [array2, array0, array3, array1]
Так как я бы изменить порядок «несколько» массив, основанный на новом отсортированном порядке «multiLengths»? Это сложно, потому что новый порядок создается с помощью функции сортировки, поэтому я не могу индексировать результаты массива sortedMulti.
Я не понимаю, почему вам нужно jQuery для циклического прохождения обычного массива. Даже если вы используете jQuery, правильным способом для этого массива будет '$ .each (multilengths, fn)'. –
возможно, потому что я не такой уж большой javascript, но я знаю, что так, как я это делал, это правильно работает или нет. PS собственно, какие стандарты? – inorganik
Мне не нужно ссылаться на какой-либо стандарт для этого. Посмотрите на циклы JavaScripts 'for', они быстрее, чем jQuerys' .each', и просто и излишне, чтобы импортировать библиотеку 30 Кбайт для перебора массивов. –