2016-03-28 166 views
2

我有一個大的JSON數據(約20K +(2MB +)),我想在我的網頁遍歷大的JavaScript多維數組

所以顯示,我得到的是與阿賈克斯數據和JSON.parse在解析JavaScript和它成爲一個大型的多維數組。然後,我用defiantjs(js lib for json)用一些過濾器搜索一些值。然後,我使用for循環在表格中顯示它們。但是,它總是說該頁面沒有響應(可能是因爲大數據)。

這是某種銷售報告。

所以,問題是,有沒有辦法做得更快,沒有for循環,以便它不會每次都崩潰? 還是我必須使用foreach,因爲不同的性能?

[編輯]


於是,每天晚上,我將我的應用我的銷售數據爲JSON(平均每天100多個數據)。現在,我想根據json數據製作一份銷售報告。管理員將設置日期範圍(可能是1個月或2個月等)。而且每天都有這麼多的數據。

數據樣本:(一個月內,有大約2K +的數據格式相同)

{ 
"nojual": "1-00043", 
"tgl": 1452038400, 
"pelanggan_id": "guest", 
"tgltempo": "0000-00-00", 
"pay": "cash", 
"sales_id": "", 
"sisa": "0", 
"po": "V5", 
"iduser": "riny", 
"modedisc": "P", 
"total_qty": "4", 
"kas": "o", 
"sync": "N", 
"last_update": "2016-01-06 12:30:54", 
"nofaktur": "19", 
"service_charge": "0", 
"mode_service_charge": "P", 
"pb2": "0", 
"detail_pay": "", 
"diskon_detail_pay": "0", 
"tipe_diskon_detail_pay": "", 
"ket_diskon": "", 
"subtotal": "120000", 
"disc": "0", 
"pajak": "10", 
"grandtotal": "132000", 
"nojd": "89", 
"barang_id": "20", 
"jlhbrg": "2", 
"hrgjual": "15000", 
"reture": "0", 
"tjddisc": "0", 
"expired": "0000-00-00", 
"total": "30000", 
"tjdiduser": "riny", 
"tjdmodedisc": null, 
"qty": "0", 
"satuan": "", 
"gudang_id": "", 
"id_option": "", 
"sp": "tawar", 
"tjdsync": "N", 
"tjdlast_update": "2016-01-06 12:30:54", 
"waiters": "astuti", 
"nama_barang": "ice tea", 
"jenis": "Minuman" 
} 
+1

我建議將分頁添加到您的網站,以免一次加載所有內容。 – smaili

+1

你需要考慮延遲加載 – gurvinder372

+0

20K +什麼樣的東西? – 2016-03-28 05:07:47

回答

0

而不是加載一切作爲一個大名單,我強烈建議你修改你的架構,以便它加載數據成爲碎片。每個塊是五行還是一百行都取決於您,但它肯定會使您的頁面響應更快,並減少負載和渲染時間。

您可以通過添加prevnext鏈接以及一些頁碼鏈接(如1, 2, ..., 5)來輕鬆實現此目的,以幫助用戶跳轉到特定部分。如果您希望減少頁面請求,請在您的尋呼機鏈接上添加Javascript監聽器,以便它們使用AJAX加載行,而不是完全傳統的頁面加載。

或者,如果您希望儘量減少點擊次數,則可以在滾動中添加Javascript聽衆,並從此處使用AJAX來請求附加行。這通常被稱爲infinite scrolling