@Iv_and_S

Array.prototype.sort() для объектов в n мерном массиве?

Необходимо сортировать элементы массива в основном массиве. Элементы массива представляют собой массив сложных по структуре объектов. Сортировать нужно по одному из свойств объекта.

Т.е. структура данных :
var allElements = [ [ {...}, {...}, {...}, {...}] ,  [  {...}, {...} ]   , [  {...}, {...} ]   ];


Упрощенный код ниже. Ожидаю на выходе увидеть массив с twoObj на первом месте. что нужно сделать чтобы массив с объектами twoObj был вначале массива верхнего уровня? что я неправильно делаю с методом Array.prototype.sort() ?

var table = new Array(2);

for(var i = 0; i < table.length; i++)
	table[i] = new Array(2);		

var oneObj = { ll : 5,  ss: 10 };
var twoObj = { ll : 100, ss: 10 };

table[0][0]=oneObj;
table[0][1]=oneObj;

table[1][0]=twoObj;
table[1][1]=twoObj;

table.sort(function (a, b) {
  if (a[0].ll > b[0].ll) {
    return 1;
  }
  if (a[0].ll < b[0].ll) {
    return -1;
  }
  return 0;
});
console.log(table[0][0]);
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Эх, молодёжжж...

var table = [
	{ ll: 5, ss: 10 },
	{ ll: 100, ss: 10 }
];

	table= table.sort(function (a, b) {
		return a.ll < b.ll
	});
	console.log("table= ", table);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Ваш код работает правильно: 5 меньше чем 100 и выносится в начало списка.
Попробуйте вместо 5 сделать 500, и тогда в начало попадет объект в котором ll=100. Ну или поменяйте сравнение в sort, если вам нужна сотировка от большего к меньшему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект