<p>я пытаюсь отсортировать массив объектов с каждым объектом, содержащим </p><pre><code>var recent = [{id: "123",age :12,start: "10/17/13 13:07"} , {id: "13",age :62,start: "07/30/13 16:30"}]; </code></pre><p>формат даты: <code>mm/dd/yy hh:mm</code></p><p>я хочу отсортировать в порядке даты с самым первым первым. если дата совпадает, она должна быть отсортирована по времени.</p><p>я опробовал приведенную ниже функцию сортировки. но это не работает.</p><pre><code>recent.sort(function(a,b)) { a = new date(a.start); b = new date(b.start); return a-b; }); </code></pre><p>кроме того, как я должен перебирать объекты для сортировки? что-то вроде:</p><pre><code>for (var i = 0; i < recent.length; i++) { recent[i].start.sort(function (a, b) { a = new date(a.start); b = new date(b.start); return a-b; } ); } </code></pre><p>в массиве может быть любое количество объектов.</p>

<pre><code>recent.sort(function(a,b) { return new date(a.start).gettime() - new date(b.start).gettime() } ); </code></pre>

<p>эта функция позволяет вам создать компаратор, который проложит путь к ключу, с которым вы хотите сравнить:</p><p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-js lang-js prettyprint-override"><code>function createdatecomparator ( path = [] , comparator = (a, b) => a.gettime() - b.gettime()) { return (a, b) => { let \_a = a let \_b = b for(let key of path) { \_a = \_a[key] \_b = \_b[key] } return comparator(\_a, \_b) } } const input = ( [ { foo: new date(2017, 0, 1) } , { foo: new date(2018, 0, 1) } , { foo: new date(2016, 0, 1) } ] ) const result = input.sort(createdatecomparator([ 'foo' ])) console.info(result)</code></pre> </div> </div> </p>