下划线迭代 javascript
underscore iteration javascript
我正在尝试使用下划线和 backbone 创建一个对象。我目前有一个对象数组,其中包含另一个对象和数据集的记录。
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"
},
我的问题是如何使用我已有的创建这个对象数组?我尝试从遍历数据对象开始,但我很难做到。在它说 data[2] 的地方,id 喜欢迭代 data[0, 2] 来获取这些值,然后将它们推送到一个对象。希望这是清楚的!
var newarr = _.map( rawData, function ( a ) { return [a.records[0].data[2].data] });
您可以通过第二个 _.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。尝试为您的阵列选择更好的名称!
我正在尝试使用下划线和 backbone 创建一个对象。我目前有一个对象数组,其中包含另一个对象和数据集的记录。
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"
},
我的问题是如何使用我已有的创建这个对象数组?我尝试从遍历数据对象开始,但我很难做到。在它说 data[2] 的地方,id 喜欢迭代 data[0, 2] 来获取这些值,然后将它们推送到一个对象。希望这是清楚的!
var newarr = _.map( rawData, function ( a ) { return [a.records[0].data[2].data] });
您可以通过第二个 _.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。尝试为您的阵列选择更好的名称!