オブジェクトの 2 つの配列を、アプリケーションでより意味のある 1 つにマージしようとしています (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);
}
}