Для меня это простой, но самый болезненный вопрос.
Возьмем пример следующего фрагмента кода:
const test = {};
test[2] = 'value2';
test[1] = 'value1';
console.info(test);Результат приведенного выше фрагмента:
{
1: "value1",
2: "value2"
}
Я хочу передать этот объект как есть со следующим результатом:
{
2: "value2",
1: "value1"
}
PS: Я попробовал Object.keys (тест) .sort () и Object.keys (тест) .reverse (), а затем связал его с функцией для воссоздания объекта, но, похоже, у меня ничего не работает.
Если вы хотите передать сам объект, не думайте, что это возможно, хотя это было бы возможно, если вы хотите передать сериализованную версию объекта. (хотя при десериализации, если то, что принимает, основано на JS, оно вернется в простой числовой порядок) Похоже, вам следует использовать вместо этого массив, возможно
Object.keys (тест) .sort (). Reverse ()
Он просто изменит ключи, но я хочу, чтобы ключ и значение были в ожидаемом формате.
Вместо того, чтобы отправлять объект по вашему выбору, отправьте объект как есть и сделайте его так, как вам нужно, в методе, который будет его обрабатывать. В случае ассоциативного массива порядок всегда случайный. В качестве альтернативы преобразуйте ассоциативный массив в массив объектов и преобразуйте их в соответствии с требованиями вашей функции.
Вы не должны полагаться на упорядочение ключей объекта, и если ваши ключи являются просто целыми числами, почему бы в первую очередь не использовать массив? Просто вставьте свои значения в массив, и вы можете просто отменить его.
Все серверные языки предоставляют эту функцию. Разработчик (особенно Backend) обязательно подумает об этом в будущем. Я чувствую, что добавление этого вопроса сюда наверняка сэкономит чье-то время. Это мое мнение. Я зря потратил свои 3 часа :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это невозможно с положительными целочисленными ключами. Это может работать в большинстве браузеров (но, вероятно, не во всех) с неположительными целочисленными ключами: [-2], [.2], ['2 '] и т. д.
const obj = { '2 ': "value2", '1 ': "value1" };
console.info(obj);
console.info( JSON.stringify(obj, 0, 2).replace(/ ": "/g, '": "') );Я проверяю, вы можете использовать что-то вроде этого, чтобы расширить свой ключ и значения на другой объект
{ключ: "", значение: ""}
const test = {};
test[2] = 'value2';
test[1] = 'value1';
test[4] = 'value4';
var r = Object.keys(test).sort().reverse()
console.info(r);
var sorted = {}
//look like JS Sorted this ASC
r.forEach(k => {
sorted[k] = test[k]
});
console.info(JSON.stringify(sorted));
// So use Array
var sorted =[]
r.forEach(k => {
sorted.push({"key":k ,"value": test[k]})
});
console.info(JSON.stringify(sorted));
Совершенно уверен, что это невозможно, потому что числовые свойства всегда перечислены в числовом порядке, не так ли? Но я думаю, что порядок свойств - это не то, от чего должен зависеть хороший код.