繁体   English   中英

遍历大型javascript多维数组

[英]loop through big javascript multidimensional array

我有一个大的json数据(大约20k +(2mb +))要显示在页面中

因此,我使用ajax获取了该数据,并使用javascript中的JSON.parse进行了解析,它成为一个很大的多维数组。 然后,我使用带有一些过滤器的defiantjs(json的js lib)搜索一些值。 然后,我使用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"
 }

我强烈建议您修改体系结构,以便将数据加载为片段,而不是将所有内容作为一个大列表加载。 每个块是五行还是一百行取决于您,但这肯定会使您的页面具有更高的响应速度,并减少加载和渲染时间。

您可以轻松地通过增加实现这个prevnext环节,以及一些页面链接数,如1, 2, ..., 5 ,帮助用户跳转到特定部分。 如果您希望减少页面请求,请在页面链接上添加Javascript侦听器,以便它们使用AJAX而不是完整的传统页面加载来加载行。

或者,如果您希望最大程度地减少点击次数,则可以滚动添加Javascript侦听器,然后使用AJAX请求其他行。 这通常称为infinite scrolling

如果要显示为带有分页或无限滚动的网格,则可以考虑使用https://www.ag-grid.com/example.php,这在处理大数据时非常有用。

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM