我正在尝试将两个对象数组合并为一个,这在应用程序中更有意义(google maps api v3)。我收到obj2 is undefined
错误。据我了解,它与上下文相关——我在 forEach 循环中调用了一个函数,它无法访问“上”循环中的对象。如何传递上下文或重新定义这些循环以使其工作?nodes
并generation
包含对象列表。这些对象是简单的键值集。
database = new Array;
function processData(nodes,generation) {
nodes.forEach(function(value)
{
var obj = {
lat : value.Latitude,
lng : value.Longitude,
data : {ID: value.Node,
timentries : []}
}
currentDate = generation[0].datetime;
var obj2 =
{
time: currentDate,
technologies :[]
}
generation.forEach(function(value2)
{
if (value2.datetime == currentDate)
{
if (value2.node == obj.data.ID)
{
var obj3 = {
type : value2.technology,
output : value2["output"],
emission : value2["emissions"]
}
obj2.technologies.push(obj3);
}
}
else
{
timentries.push(obj2)
currentDate = value2.datetime;
delete obj2;
var obj2 =
{
time: currentDate,
technologies :[]
}
}
})
database.push(obj)
})
};
$( document ).ready(function() {
loadData(processData);
});
错误发生在对 obj2 的第一次引用中:
if (value2.datetime == currentDate)
{
if (value2.node == obj.data.ID)
{
var obj3 = {
type : value2.technology,
output : value2["output"],
emission : value2["emissions"]
}
obj2.technologies.push(obj3);
}
}