У меня есть такой объект:
user = {
'a': 0,
'b': 1,
'c': 3,
'd': 4
}
Я хочу изменить его свойства следующим образом:
user = {
'c': 3,
'a': 0,
'b': 1,
'd': 4
}
Я не хочу создавать новый объект, вместо этого я хочу переставить атрибуты существующего объекта.
Если вам нужен определенный порядок, вы можете использовать дополнительный массив, чтобы упорядочить свойства в соответствии с вашими потребностями, а затем отсортировать свойства в данном объекте через этот массив после получения имен свойств через Object.keys().
Сказать, что вы хотите, чтобы user.c располагался перед user.a, все равно что сказать, что вы хотите, чтобы document.getElementById располагался перед document.querySelector. В контексте объекта это не имеет смысла. Используйте массивы (возможно, объектов) для структурирования данных, если вам нужен порядок.



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


Вы не можете определить порядок ключей в обычном объекте. Вместо этого вы можете преобразовать Object в Map.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
A Map object iterates its elements in insertion order — a for...of loop returns an array of [key, value] for each iteration.
var user = {a: 0, b: 1, c: 3, d: 4};
var uMap = new Map([['c', user.c], ['a', user.a], ['b', user.b], ['d', user.d]]);
Или вы можете превратить свой Object в Array и работать с ним. Обратной стороной этого подхода является то, что вы должны помнить правильную позицию индекса свойств / какое свойство соответствует какой позиции в массиве:
var user = {a: 0, b: 1, c: 3, d: 4};
var uArr = [user.c, user.a, user.b, user.d];
В объекте JavaScript вы не можете упорядочить пары ключ / значение. Они хранятся в собственном внутреннем формате, поэтому на упорядочение нельзя полагаться.
Я не уверен, каков ваш точный вариант использования, но если вам нужен гарантированный порядок определенных полей, вы можете создать массив, содержащий имена полей в нужном вам порядке, и использовать его для итерации по объекту и получения значений по мере того, как вы требовать.
Надеюсь это поможет!
Набор свойств в объекте действительно не имеет надежного упорядочивания. Обычно это основано на последовательности событий, которые добавляли свойства к объекту, но даже это очень хрупкое поведение, на котором можно основывать любую практику кодирования.