2017-07-12 83 views
-1

我有以下代码:排序的Javascript对象数组

private restorePurchases(): Promise<any[]> { 
    return new Promise<any[]>((resolve) => { 
     let data: any[] = 
     [ 
      { 
      productId: 'com.thewhozoo.prod.message.30days', 
      date: 1499869861370 
      }, 
      { 
      productId: 'com.thewhozoo.prod.message.3days', 
      date: 1498869861369 
      }, 
      { 
      productId: 'com.thewhozoo.prod.message.10days', 
      date: 1499869851369 
      }, 
      { 
      productId: 'com.thewhozoo.prod.message.3days', 
      date: 1499869861369 
      } 
     ]; 

     resolve(data); 
    }); 
    } 

正如你所看到的,它返回一个数组。我想按date(升序)对数组进行排序。

this.restorePurchases().then((purchases: any[]) => { 
    purchases.sort(by date); 
}); 

任何建议欢迎。

+1

[排序的JavaScript对象的数组]的可能的复制(https://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects ) – Durga

+0

除非由于某种原因TypeScript阻止它,否则您应该使用'return Promise.resolve(...)'而不是构造一个新的promise,然后调用它的'resolve'回调。 – Alnitak

回答

1

请参阅如何Array.prototype.sort documentation

this.restorePurchases().then((purchases: any[]) => { 
    purchases.sort((a, b) => a.date - b.date); 
}); 

const data = [ 
 
    { 
 
    productId: 'com.thewhozoo.prod.message.30days', 
 
    date: 1499869861370 
 
    }, 
 
    { 
 
    productId: 'com.thewhozoo.prod.message.3days', 
 
    date: 1498869861369 
 
    }, 
 
    { 
 
    productId: 'com.thewhozoo.prod.message.10days', 
 
    date: 1499869851369 
 
    }, 
 
    { 
 
    productId: 'com.thewhozoo.prod.message.3days', 
 
    date: 1499869861369 
 
    } 
 
]; 
 

 
console.log(data.sort((a, b) => a.date - b.date));

+0

谢谢,那是有效的。我会在9分钟内将此标记为正确的答案,当它允许我时。 – Richard