將物件按照時間戳排序,這裡典型的乙個例子是登入賬戶的排序:本地客戶端可能儲存了多個賬戶資訊,在登入視窗使用者可以選擇已經登陸過的賬戶直接登入,現在的需求是要時刻讓最近登陸過的賬戶排在前面,對於每個賬戶,每次登陸時都記錄下當前登陸的時間,時間是乙個時間戳(從2023年到現在的秒數)。我們要做的是將時間戳排序,然後按照時間戳的順序將所有賬戶排序。當然這也適用於其他關於時間排序的問題。// 時間戳陣列(存放時間nsdate物件用於排序)
nsmutablearray *timearr = [[nsmutablearray alloc]init];
// 時間戳-物件字典,將物件和其對應的時間戳字串存入字典(雜湊表)
nsmutabledictionary *datekeyarr = [[nsmutabledictionary alloc]init];
// 時間戳取出,並格式化處理
for(account *acc in _accountarray)
// 3.將時間nsdate陣列排序
nsarray *ordereddatearray = [timearr sortedarrayusingcomparator:^nscomparisonresult(nsdate *date1, nsdate *date2) ];
這裡製作乙個只包含使用者名稱和時間戳的假賬戶資料,排序後按照順序顯示在乙個textview中:// 根據排序好的時間陣列對號入座將物件按時間排序
// 臨時陣列,儲存排序後的物件陣列
nsmutablearray *sortedaccounts = [[nsmutablearray alloc]init];
nsdate *datekey = [[nsdate alloc]init];
for (int i = 0; i.count; i++)
// sortedaccounts就是我們要的結果了
@property (nonatomic, copy) nsstring *name; // 姓名
@property (nonatomic, assign) long
long
int logintime; // 上次登入時間戳(距離2023年的秒數)
+ (account*)newaccountwithname:(nsstring *)name andtime:(long
long
int)logintime;
@end
//
// account.m
// timesortdemo
//// created by xinhou jiang on 22/12/16.
//#import "account.h"
@implementation
account
+ (account *)newaccountwithname:(nsstring *)name andtime:(long
long)logintime
@end
//
// viewcontroller.m
// timesortdemo
//// created by xinhou jiang on 22/12/16.
//#import "viewcontroller.h"
#import "account.h"
@inte***ce
viewcontroller ()
@property(nonatomic, strong) iboutlet
uitextview *text;
@property (nonatomic, strong) nsmutablearray
*accountarray; // 賬戶陣列
@end
@implementation
viewcontroller
- (void)viewdidload
- (void) request
// 將陣列按照時間戳排序
- (ibaction)sort:(id)sender
// 3.將時間nsdate陣列排序
nsarray *ordereddatearray = [timearr sortedarrayusingcomparator:^nscomparisonresult(nsdate *date1, nsdate *date2) ];
// 4.根據排序好的時間陣列對號入座將物件按時間排序
// 臨時陣列,儲存排序後的物件陣列
nsmutablearray *sortedaccounts = [[nsmutablearray alloc]init];
nsdate *datekey = [[nsdate alloc]init];
for (int i = 0; i.count; i++)
// 5.更新排序後的物件陣列[arc中不需要手動釋放排序前的陣列]
_accountarray = sortedaccounts;
// 顯示排序後的資料
[self showui];
}// 顯示資料到頁面
LinkedList中將物件按照某一屬性排序
例如,鍊錶 treelist 宣告如下 linkedlisttreelist new linkedlist 其中 treenode 是自己定義的乙個類,類中有乙個 int 型別的 value 屬性,若要以 treenode 中的 value 屬性排序,可以如下實現 1 新增乙個類,實現 compar...
JS中將物件轉化為陣列
這個對於大佬來說應該是個很基礎的問題,但是今天我要用到這個的時候卻一下沒想起來該怎麼做,所以打算寫下來加深下影響。舉個例子,如何把乙個物件轉化為 我們都知道,js中物件有兩種取值方式,通過在.後面直接加屬性名取值,這也是我們最常使用的一種方式,例如 let obj console.log obj.n...
JS中將物件轉化為陣列
通過在.後面直接加屬性名取值,這也是我們最常使用的一種方式 let obj console.log obj.name wan let obj console.log obj name wan 中括號獲取的時候,屬性名稱要麼使用變數,要麼應該用字串 物件 let obj 如果目標陣列只是為了得到物件的...