在 JavaScript 中按月對資料進行分組
在給定的問題陳述中,我們必須按月對給定的資料進行分組。簡單來說,資料在按月分組後應該以排序的形式顯示。例如,資料中給出了年份和月份,因此應該按從 1 月到 12 月的順序顯示。
眾所周知,陣列是用於儲存資料的結構模板。我們可以根據需要操作這些資料。它可以將一組專案儲存在一個數組中,並且有許多操作可以執行,例如新增元素、刪除元素或在陣列中搜索特定元素。
讓我們透過下面的示例來理解,該示例以實際的方式展示了問題陳述
const arr = [
{
year: 2020,
month: 'April'
}, {
year: 2020,
month: 'January'
}, {
year: 2017,
month: 'May'
}, {
year: 2017,
month: 'March'
}, ]
上述陣列應以如下排序形式顯示
{ year: 2017, month: 'March' },
{ year: 2017, month: 'May' },
{ year: 2020, month: 'January' },
{ year: 2020, month: 'April' }
演算法
下面提到的演算法將提供解決給定問題的分步過程。
例如,如果我們給定一個定義年份和月份的陣列,那麼我們應該提供如下精確的演算法
步驟 1:使用任何資料型別(let、var 或 const)宣告一個數組。
步驟 2:宣告另一個名為 months 的陣列,用於儲存所有月份。
步驟 3:建立一個名為 sortedData 的函式,該函式接受兩個引數。
步驟 4:首先檢查年份的條件,如果條件為真,則執行它,否則轉到 else 部分。
步驟 5:使用 indexOf 方法檢查 else 條件,該方法返回在陣列中找到給定元素的第一個索引,如果不存在則返回 -1。
步驟 6:比較成功後,宣告 sort 方法。sort() 方法對陣列中存在的元素進行排序。它還會覆蓋實際的陣列。
步驟 7:條件滿足後,它將在控制檯中列印排序後的資料。
示例
// define data here in array form
const data = [{ name: 'Pearl',
year: 2020,
month: 'January'
}, {
name: 'John',
year: 2017,
month: 'March'
}, {
name: 'Peter',
year: 2010,
month: 'January'
}, {
name: 'Nick',
year: 2010,
month: 'December'
},{
name: 'Angel',
year: 2020,
month: 'October'
}, {
name: 'Jas',
year: 2017,
month: 'June'
}];
const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
// create function to sort
const sortedData = (a, b) => {
if(a.year !== b.year){
return a.year - b.year;
}
else{
// comparison of months at each index
return months.indexOf(a.month) - months.indexOf(b.month);
};
};
// using sort method in javascript
data.sort(sortedData);
console.log(data);
輸出
[
{ name: 'Peter', year: 2010, month: 'January' },
{ name: 'Nick', year: 2010, month: 'December' },
{ name: 'John', year: 2017, month: 'March' },
{ name: 'Jas', year: 2017, month: 'June' },
{ name: 'Pearl', year: 2020, month: 'January' },
{ name: 'Angel', year: 2020, month: 'October' }
]
在上面的程式碼中,我們聲明瞭一個儲存資料的陣列。另一個儲存月份的陣列。我們還聲明瞭一個名為 sortedData 的函式。它的作用是比較值並使用 sort() 方法提供有序資料。
然後我們定義了另一個 JavaScript 方法 indexOf。此方法的工作機制是在字串中返回值的索引位置。如果未找到該值,它還會返回 -1。indexOf() 方法使用駝峰命名法進行定義。
sort() 方法用於按某種順序排列陣列的元素,當您需要根據特定條件對物件陣列進行排序時。
複雜度
對於此程式,時間複雜度為 O(n log n)。這裡 n 是資料陣列中物件的數目。sort() 方法的時間複雜度為 O(n log n)。因此,我們可以說該程式的總體時間複雜度為 O(n log n)。此程式的空間複雜度為 O(n),用於儲存陣列的所有元素。
結論
這就是我們如何解決給定的問題陳述並使用 JavaScript 中預定義的 sort() 和 indexOf() 方法以排序的形式排列資料。此演算法的時間複雜度為 O(n log n)。因此,藉助此程式,您可以學習如何在 JavaScript 中使用 sort 和 indexOf 方法。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP