减少坐标对集合的地图
Map reducing a collection of coordinate pairs
我已经成为一名开发人员几年了,我似乎不太了解的一个概念是 map reduce。
我有一组定义正方形的坐标,每个值都是一个包含两个数组的数组。每个内部数组本身就是一个包含两个数值的数组。
//Example values:
//Each value is the following [[left, top],[right, bottom]]
var boundingBoxes = [
[[20, 20], [50, 30]],
[[15, 25], [35, 45]],
[[25, 25], [40, 40]]
]
我需要将此集合缩减为一组坐标,这样我就可以定义一个矩形,该矩形包围坐标在集合中的所有矩形。所以每个左侧和顶部的最低值,右侧和底部的最高值。
//Output for above values should be
[[15, 20], [50, 45]]
进一步的背景。坐标结构来自 d3.path().bounds(d)。我正在获取多个状态的边界并创建一个封装所有状态的边界框;用于缩放地图上重新定义的状态集合。
如果你想用 reduce
解决这个问题,可以使用以下方法:
var boundingBoxes = [
[[20, 20], [50, 30]],
[[15, 25], [35, 45]],
[[25, 25], [40, 40]]
];
var result = boundingBoxes.reduce(function(prev,curr){
var left = Math.min(prev[0][0], curr[0][0]),
top = Math.min(prev[0][1], curr[0][1]),
right = Math.max(prev[1][0], curr[1][0]),
bottom = Math.max(prev[1][1], curr[1][1]);
return [[left,top],[right,bottom]];
});
reduce
的回调函数从数组中获取 previous
和 current
元素。您可以将第一个 "previous" 的初始值设置为 reduce
的第二个参数。如果省略初始值,则 reduce 从第一个和第二个元素开始。
您只需将 return 元素的每个值与回调中的适当值进行比较。
我已经成为一名开发人员几年了,我似乎不太了解的一个概念是 map reduce。
我有一组定义正方形的坐标,每个值都是一个包含两个数组的数组。每个内部数组本身就是一个包含两个数值的数组。
//Example values:
//Each value is the following [[left, top],[right, bottom]]
var boundingBoxes = [
[[20, 20], [50, 30]],
[[15, 25], [35, 45]],
[[25, 25], [40, 40]]
]
我需要将此集合缩减为一组坐标,这样我就可以定义一个矩形,该矩形包围坐标在集合中的所有矩形。所以每个左侧和顶部的最低值,右侧和底部的最高值。
//Output for above values should be
[[15, 20], [50, 45]]
进一步的背景。坐标结构来自 d3.path().bounds(d)。我正在获取多个状态的边界并创建一个封装所有状态的边界框;用于缩放地图上重新定义的状态集合。
如果你想用 reduce
解决这个问题,可以使用以下方法:
var boundingBoxes = [
[[20, 20], [50, 30]],
[[15, 25], [35, 45]],
[[25, 25], [40, 40]]
];
var result = boundingBoxes.reduce(function(prev,curr){
var left = Math.min(prev[0][0], curr[0][0]),
top = Math.min(prev[0][1], curr[0][1]),
right = Math.max(prev[1][0], curr[1][0]),
bottom = Math.max(prev[1][1], curr[1][1]);
return [[left,top],[right,bottom]];
});
reduce
的回调函数从数组中获取 previous
和 current
元素。您可以将第一个 "previous" 的初始值设置为 reduce
的第二个参数。如果省略初始值,则 reduce 从第一个和第二个元素开始。
您只需将 return 元素的每个值与回调中的适当值进行比较。