Показать сообщение отдельно
  #12 (permalink)  
Старый 06.02.2019, 02:05
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

var a = {
	a: { param1: 1,   param2: 22,  param3: 3   },
	b: { param1: 11,  param2: 2,   param3: 33  },
	c: { param1: 111, param2: 222, param3: 333 }
};

// ключи оригинального объекта
alert(Object.entries(a).map(([key]) => key).join(" > "));

// создадим отсортированный объект
var aSorted = Object.entries(a)
	.sort(([, a], [, b]) => a.param2 > b.param2 ? 1 : -1)
	.reduce((m, [k, v]) => ({ ...m, [k]: v }), {})

// ключи отсортированного объекта
alert(Object.entries(aSorted).map(([key]) => key).join(" > "));


Ключи объекта не должны быть строками, которые могут быть приведены к целочисленному индексу (ecma-international.org/ecma-262/9.0/)

Сообщение от AntonMs
На данный момент задача именно такая. Вот к примеру объект, если его перебирать то сначала будет "а". А нужно что-бы b > a > c.
В том примере вы ничего не перебираете!

var a = {
	b: { param1: 11,  param2: 2,   param3: 33  },
	a: { param1: 1,   param2: 22,  param3: 3   },
	c: { param1: 111, param2: 222, param3: 333 }
};

for(const [key, value] of Object.entries(a)) {
	alert(key);
}
Ответить с цитированием