簡體   English   中英

如何在javascript中按日期范圍從對象數組中獲取唯一數據

[英]How to get unique data from array of object by date range in javascript

大家好,我需要幫助我正在嘗試通過 JavaScript 中的 from_date 和 to_date 從對象數組中獲取最新數據我無法在下面獲取它是我的數組

[
    {"id": 408,"customer_id": 2,"bill_no": 381,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 409,"customer_id": 3,"bill_no": 382,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 410,"customer_id": 4,"bill_no": 383,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 411,"customer_id": 6,"bill_no": 384,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 412,"customer_id": 7,"bill_no": 385,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 413,"customer_id": 8,"bill_no": 386,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 414,"customer_id": 9,"bill_no": 387,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 387,"customer_id": 2,"bill_no": 360,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 388,"customer_id": 3,"bill_no": 361,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 389,"customer_id": 4,"bill_no": 362,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 390,"customer_id": 6,"bill_no": 363,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 391,"customer_id": 7,"bill_no": 364,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 392,"customer_id": 8,"bill_no": 365,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 393,"customer_id": 9,"bill_no": 366,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"},
    {"id": 380,"customer_id": 2,"bill_no": 353,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"},
    {"id": 381,"customer_id": 3,"bill_no": 354,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"},
    {"id": 382,"customer_id": 4,"bill_no": 355,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"},
    {"id": 383,"customer_id": 6,"bill_no": 356,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"},
    {"id": 384,"customer_id": 7,"bill_no": 357,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"},
    {"id": 385,"customer_id": 8,"bill_no": 358,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"},
    {"id": 386,"customer_id": 9,"bill_no": 359,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}
]

我想要從和到最新日期的上述數組中的唯一數據,我想要像下面的代碼一樣的結果

[
{"id": 408,"customer_id": 2,"bill_no": 381,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 409,"customer_id": 3,"bill_no": 382,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 410,"customer_id": 4,"bill_no": 383,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 411,"customer_id": 6,"bill_no": 384,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 412,"customer_id": 7,"bill_no": 385,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 413,"customer_id": 8,"bill_no": 386,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
    {"id": 414,"customer_id": 9,"bill_no": 387,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"},
]

您可以減少數組並檢查日期是否大於其他日期。

 const data = [{ id: 408, customer_id: 2, bill_no: 381, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 409, customer_id: 3, bill_no: 382, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 410, customer_id: 4, bill_no: 383, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 411, customer_id: 6, bill_no: 384, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 412, customer_id: 7, bill_no: 385, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 413, customer_id: 8, bill_no: 386, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 414, customer_id: 9, bill_no: 387, bill_period: "weekly", from_date: "2021-10-10", to_date: "2021-10-16" }, { id: 387, customer_id: 2, bill_no: 360, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 388, customer_id: 3, bill_no: 361, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 389, customer_id: 4, bill_no: 362, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 390, customer_id: 6, bill_no: 363, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 391, customer_id: 7, bill_no: 364, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 392, customer_id: 8, bill_no: 365, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 393, customer_id: 9, bill_no: 366, bill_period: "weekly", from_date: "2021-10-03", to_date: "2021-10-09" }, { id: 380, customer_id: 2, bill_no: 353, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }, { id: 381, customer_id: 3, bill_no: 354, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }, { id: 382, customer_id: 4, bill_no: 355, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }, { id: 383, customer_id: 6, bill_no: 356, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }, { id: 384, customer_id: 7, bill_no: 357, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }, { id: 385, customer_id: 8, bill_no: 358, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }, { id: 386, customer_id: 9, bill_no: 359, bill_period: "weekly", from_date: "2021-09-26", to_date: "2021-10-02" }], result = data.reduce((r, o) => { if (!r || r[0].from_date < o.from_date) return [o]; if (r[0].from_date === o.from_date) r.push(o); return r; }, undefined); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

您可以使用Array.filter()僅獲取您想要的對象。 您可以使用 Date 構造函數將您的from_dateto_date轉換為 Date 對象,您可以簡單地將其與所需的日期范圍進行比較。

 const bills = [ {"id": 408,"customer_id": 2,"bill_no": 381,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 409,"customer_id": 3,"bill_no": 382,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 410,"customer_id": 4,"bill_no": 383,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 411,"customer_id": 6,"bill_no": 384,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 412,"customer_id": 7,"bill_no": 385,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 413,"customer_id": 8,"bill_no": 386,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 414,"customer_id": 9,"bill_no": 387,"bill_period": "weekly","from_date": "2021-10-10","to_date": "2021-10-16"}, {"id": 387,"customer_id": 2,"bill_no": 360,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 388,"customer_id": 3,"bill_no": 361,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 389,"customer_id": 4,"bill_no": 362,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 390,"customer_id": 6,"bill_no": 363,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 391,"customer_id": 7,"bill_no": 364,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 392,"customer_id": 8,"bill_no": 365,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 393,"customer_id": 9,"bill_no": 366,"bill_period": "weekly","from_date": "2021-10-03","to_date": "2021-10-09"}, {"id": 380,"customer_id": 2,"bill_no": 353,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}, {"id": 381,"customer_id": 3,"bill_no": 354,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}, {"id": 382,"customer_id": 4,"bill_no": 355,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}, {"id": 383,"customer_id": 6,"bill_no": 356,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}, {"id": 384,"customer_id": 7,"bill_no": 357,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}, {"id": 385,"customer_id": 8,"bill_no": 358,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"}, {"id": 386,"customer_id": 9,"bill_no": 359,"bill_period": "weekly","from_date": "2021-09-26","to_date": "2021-10-02"} ]; // Your desired date range const startDate = new Date(2021, 10 - 1, 10); const endDate = new Date(2021, 10 - 1, 16); const filteredBills = bills.filter(bill => { // Convert to Date object const [fromYear, fromMonth, fromDay] = bill.from_date.split("-"); const [toYear, toMonth, toDay] = bill.to_date.split("-"); const fromDate = new Date(fromYear, fromMonth - 1, fromDay); const toDate = new Date(toYear, toMonth - 1, toDay); // Check if dates are within your desired range const fromDateWithinRange = fromDate >= startDate && fromDate <= endDate; const toDateWithinRange = toDate >= startDate && toDate <= endDate; return fromDateWithinRange && toDateWithinRange; }); console.log(JSON.stringify(filteredBills));

日期文檔: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date

Array.filter()文檔: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM