<p>по определению, порядок ключей в объекте <a href="https://stackoverflow.com/q/5525795/1048572"><strong>не определен</strong></a> , поэтому вы, вероятно, не сможете сделать это таким образом, чтобы это было ориентировано на будущее. вместо этого вам следует подумать о сортировке этих ключей, когда объект фактически отображается пользователю. какой бы порядок сортировки он не использовал внутри, это не имеет никакого значения.</p><p>по соглашению большинство браузеров сохраняют порядок ключей в объекте в том порядке, в котором они были добавлены. таким образом, вы можете сделать это, но не ожидайте, что это всегда будет работать:</p><pre><code>function sortobject(o) { var sorted = {}, key, a = []; for (key in o) { if (o.hasownproperty(key)) { a.push(key); } } a.sort(); for (key = 0; key < a.length; key++) { sorted[a[key]] = o[a[key]]; } return sorted; } </code></pre>

<p>эта функция принимает объект и возвращает отсортированный массив массивов в форме [ключ, значение]</p><pre><code>function (o) { var a = [],i; for(i in o){ if(o.hasownproperty(i)){ a.push([i,o[i]]); } } a.sort(function(a,b){ return a[0]>b[0]?1:-1; }) return a; } </code></pre><p>структура данных объекта не имеет четко определенного порядка. с математической точки зрения, набор ключей в объекте является неупорядоченным набором и должен рассматриваться как таковой если вы хотите определить порядок, вы должны использовать массив, поскольку массив, имеющий порядок, является предположением, которое вы можете полагаться на. объект, имеющий какой-то порядок, - это то, что остается на усмотрение реализации.</p>

<p>просто используйте <a href="https://www.npmjs.com/package/json-stable-stringify">отсортированный stringify ()</a> , когда вам нужно сравнить или хэшировать результаты.</p>

<pre><code>// if ya need old browser support object.keys = object.keys || function(o) { var result = []; for(var name in o) { if (o.hasownproperty(name)) result.push(name); } return result; }; var o = {c: 3, a: 1, b: 2}; var n = sortem(o); function sortem(old){ var newo = {}; object.keys(old).sort().foreach(function(k) {new[k]=old[k]}); return newo; } // deep function sortem(old){ var newo = {}; object.keys(old).sort().foreach(function(k){ newo[k]=sortem(old[k]) }); return newo; } sortem({b:{b:1,a:2},a:{b:1,a:2}}) </code></pre>

<p>это следует использовать с осторожностью, так как ваш код не должен полагаться на порядок свойств объекта. если это просто вопрос презентации (или просто для удовольствия!), вы можете отсортировать свойства так:</p><pre><code>function sortobject(src) { var out; if (typeof src === 'object' && object.keys(src).length > 0) { out = {}; object.keys(src).sort().foreach(function (key) { out[key] = sortobject(src[key]); }); return out; } return src; } </code></pre>