我想将两个来源的地理数据(逻辑/纬度)读入一个Javascript数组。我创建了一个带有数组的javascript对象来保存这些数据
这是我的对象定义:
var GeoObject = {
"info": [ ]
};
当读取两个数据源时,如果键RecordId已存在于数组中,则将新数组元素(lat& lon)附加到现有GeoObject,否则添加新数组记录。
例如,如果RecordId 99999尚不存在,则添加数组(如SQL添加)
GeoObject.info.push(
{ "RecordId": "99999" , "Bing_long": -75.0000, "Bing_lat": 41.0000 } )
如果记录99999已存在,则将新数据附加到现有数组(如SQL更新)。
GeoObject.info.update???(
{ "RecordId": "99999" , "Google_long": -75.0001, "Google_lat": 41.0001 } )
当应用程序完成时,对象中的每个数组都应该有五个数组元素,包括RecordId。例子:
[ "RecordId": "88888" , "Bing_long": -74.0000, "Bing_lat": 40.0001, "Google_long": -74.0001, "Bing_long": -70.0001 ]
[ "RecordId": "99999" , "Bing_long": -75.0000, "Bing_lat": 41.0001, "Google_long": -75.0001, "Bing_long": -75.0001 ]
我希望我很清楚。这对我来说很新,有点复杂。
对于这种情况,对象定义可能并不理想。
答案 0 :(得分:1)
我会制作一个物体对象。
var GeoObject = {
// empty
}
function addRecords(idAsAString, records) {
if (GeoObject[idAsAString] === undefined) {
GeoObject[idAsAString] = records;
} else {
for (var i in records) {
GeoObject[idAsAString][i] = records[i];
}
}
}
// makes a new
addRecords('9990', { "Bing_long": -75.0000, "Bing_lat": 41.0000 });
//updates:
addRecords('9990', { "Google_long": -75.0001, "Google_lat": 41.0001 });
这为您提供了一个如下所示的对象:
GeoObject = { '9990' : { "Bing_long": -75.0000,
"Bing_lat": 41.0000,
"Google_long": -75.0001,
"Google_lat": 41.0001 }
}
第二条记录看起来像这样:
GeoObject = { '9990' : { "Bing_long": -75.0000,
"Bing_lat": 41.0000,
"Google_long": -75.0001,
"Google_lat": 41.0001 },
'1212' : { "Bing_long": -35.0000,
"Bing_lat": 21.0000 }
}