我正在尝试使用下划线和骨干创建一个对象。我目前有一个对象数组,里面有一个记录与另一个对象和数据集。
data [0]包含位置的名称 data [2]包含该位置的坐标
data: Array[3] 0: Objectcol_id: "4" data: "W Hotel Union
Square" __proto__: Object1: Object2: Objectcol_id: "13"data: "40.736638, -73.988396"
要获取坐标并将它们推送到新数组,我使用以下函数:
var newarr = _.map( rawData, function ( a ) { return [a.records[0].data[2].data] });
然后我分割坐标数组并创建一个具有键值对的对象,我在其中设置坐标。
var newnewarr = [];
for (i = 0; i < newarr.length; i++) {
newnewarr[i] = _.map(newarr[i][0].split(","), function(s){ return parseFloat(s);
});
}
function longlat( lat, long) {
this.Latitude = lat; this.Longitude = long;
};
var coordinates = [];
for (i = 0; i < newnewarr.length; i++) {
coordinates[i] = new longlat(newnewarr[i][0], newnewarr[i][1]);
}
我现在正在尝试做什么,但我很难创建一个如下所示的对象:
newarr = [ {
latitude: 40.736638,
longitude: -73.988396,
title: "W hotel Union Square"
},
{
latitude: 40.736638,
longitude: -73.988396,
title: "Union Square Park"
},
我的问题是如何使用我拥有的东西创建这个对象数组?我尝试通过迭代数据对象开始,但我很难做到这一点。在它说数据[2]的地方,id喜欢迭代数据[0,2]来获取那些值,然后将它们推送到一个对象。希望这很清楚!
var newarr = _.map( rawData, function ( a ) { return [a.records[0].data[2].data] });
答案 0 :(得分:0)
您可以通过第二次_.map()调用轻松完成,如下所示:
var rawData = [<your raw data here>];
var tempDataArray = _.map( rawData, function ( a ) { return [a.records[0]] });
var finalDataArr = tempDataArray.map(function(d) {
var tempCoordinatesArray = d[2].data.split(",");
return {
latitude: tempCoordinatesArray[0],
longitude: tempCoordinatesArray[1],
title: d[0],
}
});
console.log(finalDataArr);
或者,如果您想一步完成:
var rawData = [<your raw data here>];
var finalDataArr = rawData.map(function(d) {
var tempData = d.records[0];
var tempCoordinatesArray = tempData[2].date.split(",");
return {
latitude: tempCoordinatesArray[0],
longitude: tempCoordinatesArray[1],
title: tempData[0],
}
});
console.log(finalDataArr);
P.S。尝试为阵列选择更好的名称!