【发布时间】:2012-04-16 22:08:11
【问题描述】:
所以我有两个非常大的多维数组(4000+)。我从服务器得到第一个数组作为响应,我必须为每个数组元素创建 dom 节点。一旦这个过程完成,我必须发送另一个请求,在那里我将获得另一个元素列表,这将是第一个列表的子集,基于第二个列表,我必须修改第一个列表中的一些元素(并将这些更改反映在DOM 也是如此)。这个过程需要很长时间才能完成,有没有办法在没有两个 for 循环的情况下完成这个?或者更快的比较?
场景
现实世界的例子如下,考虑一群人 在特定区域 (arr1)。在 DOM 中,这将表示为
CheckBox - Name现在考虑一组被管理的人 特定疫苗(arr2),现在 arr2 有元素列表 复选框应该被选中。必须显示整个列表(arr1 的 dom 表示) 费用。
数组的类型是
[ ["index", "name", "age"],............. ["4000-index", "4000-name", "4000-age"]]
这是一个伪代码..
//First request, get the response (resp) and Create DOM elements accordingly
for(var i=0, iLen=resp.length; i<iLen; i++)
{
// Checkbox and <span id='entry-"+resp[i][0]+"'>resp[i][1]</span>
}
// At a later stage in the code...
//Request server for the second list get the response (resp)
arr2 = resp // Second Array
// Walk through the dom, get the list of span elements and store their ids in an array arr1
for(var i=0, iLen=arr1.length; i<iLen; i++)
{
for(var j=0, jLen= arr2.length; j<jLen; j++)
{
if(+arr2[j][0] === +arr1[i][0])
{
//checkbox attr = 'checked'
}
}
}
【问题讨论】:
-
您是否有一些示例代码 - 可能还有示例数据提供者?会更容易帮助:-)
-
也许您应该重新考虑服务器发送给客户端的内容。既然 2 个列表是相关的,为什么要进行 2 个查询?
-
@camus & santa :为了便于理解,我更新了我的问题。这两个查询是因为这些列表是在不同的数据库中维护的。因此。
-
您绝对应该考虑为此另辟蹊径。
-
+1 ,你应该做“混搭”服务器端。
标签: javascript arrays