在javascript中基于键合并两个对象数组

时间:2015-04-03 00:19:37

标签: javascript join merge mapping underscore.js

我正在将geoJSON shapefile与Census Data合并用于Web映射。

每个数组中的每个元素都有一个GeoID,我希望以此为基础。

我已经成功地做到了这一点,但我想知道是否有人知道更好的方法,如果有什么我做了大量的错误。

我这样做的方法是根据GeoID属性的值用下划线对每个数组进行排序。我确认每个都排成了测试

//- Create array of features sorted by GeoID
var sortedShapes = _.sortBy(sfTracts.features, function(o) { return o.properties.GEOID10});
//- Create array of features (w/o shapes) by GeoID
var sortedData = _.sortBy(kidsInPov, function(o) { return o.GeoID} );

然后我使用下划线.map()来组合它们。

var count = 0;
var joinedData = _.map(sortedShapes, 
  function(o) {
  // add data desired from dataset
  o.properties.HD01_VD01 = sortedData[count].HD01_VD01;
  o.properties.HD01_VD02 = sortedData[count].HD01_VD02;
  o.properties.HD01_VD10 = sortedData[count].HD01_VD10;
  count++;
  return o
}
); 

1 个答案:

答案 0 :(得分:0)

使用开源项目jinqJs非常简单

请参阅Fiddle

//Use jsJinq.com open source library
var list1= [{Location: 'NY', People: 200}, {Location: 'TX', People: 500}];
var list2= [{Location: 'NY', State: 'New York'}, {Location: 'TX', State: 'Texas'}]

var result = jinqJs().from(list1).join(list2).on('Location').select();