是否可以在forEach函数中用数组填充两个对象?

时间:2016-06-16 08:57:33

标签: javascript arrays foreach

是否可以在forEach函数中用数组填充两个对象并将它们作为单独的变量输出?我想要一个名为geojson和geojson2的两个变量。我知道我可以复制粘贴代码并为每个变量单独分配,但如果我只在一个foreach函数中完成它就会更清晰。 我在下面的代码中注释掉了第二个变量,所以很明显我为第二个变量添加了什么。我尝试了代码,但运行时出现此错误: TypeError: d.split is not a function

        geojson = {
            "type": "FeatureCollection",
            "features": []
        };

        geojson2 = {
            "type": "FeatureCollection",
            "features": []
        };

        var dataArray = data.split(", ;");
        dataArray.pop();

        dataArray.forEach(function(d,e){
            d = d.split(", "); 
            //e = e.split(", "); 

            var feature = {
                "type": "Feature",
                "properties": {}, //properties object container
                "geometry": JSON.parse(d[fieldList.length]) //parse geometry
            };

            for (var i=0; i<fieldList.length; i++){
                if ([fieldList[i].show_field] == 't') {
                    feature.properties[fieldList[i].field_alias] = d[i];
                } else {
                    //feature.properties[fieldList[i].field_name] = e[i];    
                }
            };
            geojson.features.push(feature);
            //geojson2.features.push(feature);
            console.log(geojson);
        });

1 个答案:

答案 0 :(得分:2)

如果您可以提供需要从中生成的源字符串和数据对象,则可能有一种方法可以使用正则表达式来提取所需的数据而不是循环和拆分。 如果您尝试在一个循环中进行操作,则可以在单个循环中移动所有非重复代码。但这仍然不是很好,

dataArray.forEach(function(d){
d = d.split(", "); 

var feature = {
    "type": "Feature",
    "properties": {}, 
    "geometry": JSON.parse(d[fieldList.length]) 
};
var feature2 = feature;

for (var i=0; i<fieldList.length; i++){
    if ([fieldList[i].show_field] == 't') {
        feature.properties[fieldList[i].field_alias] = d[i];
    }
    feature2.properties[fieldList[i].field_name] = d[i]; 
};
geojson.features.push(feature);
geojson2.features.push(feature2);
console.log(geojson);
});