【发布时间】:2014-04-19 10:54:47
【问题描述】:
我有一个函数应该用键构建一个数组。这些键将具有一系列对象作为值。
我有一些相互嵌套的循环,我非常接近解决方案,但在最后一个循环中我犯了一个错误,我看不到解决方案。
函数循环遍历具有 ID 的数组。这些将是输出数组的键值。之后,它会遍历一个包含很多对象的数组。这些对象具有属性“类别”。有些人有一个,有些人有更多。因此,我使用 for 循环遍历所有类别。
如果类别与 id 相同,则应该将对象推送到 var objs,这将添加到正确的键中。
这一切正常,但是,我希望对象只保存一个类别。所以我在最后一个循环中声明了一个新的 var,把 obj 放在那里并设置 obj.category。不幸的是,这覆盖了“源”,array[x].category。这不好,因为这会出现一个问题,即具有两个类别的对象在此函数中只能找到一次,并且必须找到两次才能保存两次(每个表示键值一次)。
一小段代码解释很多……
$.each(unique_id, function(i, el){
var objs = [];
for(var x in array)
{
for(var j=0; j<array[x].category.length; j++)
{
if(array[x].category[j] == el)
{
var obj = array[x];
obj.category = el;
objs.push(obj);
}
}
}
data[el] = objs;
})
【问题讨论】:
标签: javascript jquery for-loop overwrite nested