循环遍历大型javascript多维数组
我有一个大的json数据(大约20k+(2mb+),我想在我的页面中显示 因此,我使用ajax获取数据,并使用javascript中的JSON.parse进行解析,它变成了一个大的多维数组。然后,我用一些过滤器用TJS(js lib for json)搜索一些值。然后,我使用for循环在表中显示它们。但是,它总是说页面没有响应(可能是因为大数据) 这是某种销售报告 所以,问题是,有没有任何方法可以更快地实现这一点,而不需要for循环,这样它就不会每次都崩溃? 还是因为性能不同而必须使用foreach [编辑]循环遍历大型javascript多维数组,javascript,arrays,json,multidimensional-array,Javascript,Arrays,Json,Multidimensional Array,我有一个大的json数据(大约20k+(2mb+),我想在我的页面中显示 因此,我使用ajax获取数据,并使用javascript中的JSON.parse进行解析,它变成了一个大的多维数组。然后,我用一些过滤器用TJS(js lib for json)搜索一些值。然后,我使用for循环在表中显示它们。但是,它总是说页面没有响应(可能是因为大数据) 这是某种销售报告 所以,问题是,有没有任何方法可以更快地实现这一点,而不需要for循环,这样它就不会每次都崩溃? 还是因为性能不同而必须使用forea
因此,每天晚上,我都将应用程序的销售数据传输到json(平均每天100多个数据)。现在,我想基于json数据制作一份销售报告。管理员将设置日期范围(可以是1个月或2个月等)。每天都有这么多的数据 数据样本:(一个月内,大约有2k+个相同格式的数据)
我强烈建议您修改您的体系结构,以便将数据加载到各个部分,而不是将所有内容作为一个大列表加载。每个区块是有五行还是一百行取决于您,但它肯定会使您的页面响应更快,并减少负载和渲染时间 您可以通过添加
prev
和next
链接以及一些页码链接(如1、2、…、5
)来轻松实现这一点,以帮助用户跳转到特定部分。如果希望减少页面请求,请在寻呼机链接上添加Javascript
侦听器,以便它们使用而不是传统的完整页面加载来加载行
或者,如果您希望最小化点击,您可以在滚动条上添加
Javascript
侦听器,并从中使用以请求额外的行。这通常被称为“代码>无限滚动 .如果你要显示一个带有分页或无限滚动的网格,你可以认为这是非常好的,当涉及到巨大的数据时。
我希望这能帮助你我建议在你的站点中添加分页,这样你就不会在任何时候加载所有的东西。你需要考虑懒惰的加载20K+的什么东西?没有人会浏览20行的任何东西,那你究竟为什么要加载它呢?这毫无意义。您应该只加载用户想要或需要查看的行。那么您想显示网格、图表或其他图形吗?你能更具体地说明你想用它做什么吗?
{
"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"
}