我遇到错误,指出data.forEach不是函数。代码是:
function getProperGeojsonFormat(data) {
isoGeojson = {"type": "FeatureCollection", "features": []};
console.log("After getProperGeojsonFormat function")
console.log(data)
console.log("")
data.forEach(function(element, index) {
isoGeojson.features[index] = {};
isoGeojson.features[index].type = 'Feature';
isoGeojson.features[index].properties = element.properties;
isoGeojson.features[index].geometry = {};
isoGeojson.features[index].geometry.coordinates = [];
isoGeojson.features[index].geometry.type = 'MultiPolygon';
element.geometry.geometries.forEach(function(el) {
isoGeojson.features[index].geometry.coordinates.push(el.coordinates);
});
});
$rootScope.$broadcast('isochrones', {isoGeom: isoGeojson});
}
我得到的错误是:
当我控制日志数据时:
答案 0 :(得分:0)
forEach
适用于数组,而不适用于对象。这里似乎data
是一个对象。
改为使用它。
Object.keys(data).forEach(function(index) {
var element = data[index];
isoGeojson.features[index] = {};
isoGeojson.features[index].type = 'Feature';
isoGeojson.features[index].properties = element.properties;
isoGeojson.features[index].geometry = {};
isoGeojson.features[index].geometry.coordinates = [];
isoGeojson.features[index].geometry.type = 'MultiPolygon';
element.geometry.geometries.forEach(function(el) {
isoGeojson.features[index].geometry.coordinates.push(el.coordinates);
});
});
Object.keys
从对象的键创建一个数组。然后,您可以迭代这些键并获取关联的值。
这种方法适用于任何对象。
答案 1 :(得分:0)
data
是一个对象。看起来你想要遍历该对象中的features
数组,所以:
data.features.forEach(function(element, index) {
isoGeojson.features[index] = {
type: 'Feature',
properties: element.properties,
geometry: {
type: 'MultiPolygon',
coordinates: element.coordinates.slice()
}
}
});