部分展平多维数组
Partially flatten multidimensional array
本文关键字:数组 更新时间:2023-09-26
我有一系列的大纲和要点。对于大纲,调用 outline.geometry.coordinates
会生成一个多维坐标数组:
[[[-72.68639118392117,41.66733032827929],[-72.68630366033922,41.667449647115724], ...]]
对于一个点,调用 point.geometry.coordinates
会生成坐标的一维数组:
[-72.78630766033722,41.767349642115724]
点和轮廓都保存在一个数组中。 我想最终得到一个包含所有坐标对的数组,例如:
[[[-72.68639118392117,41.66733032827929],[-72.68630366033922,41.667449647115724],[-72.78630766033722,41.767349642115724], ...]]
我尝试过什么
首先,我尝试获取所有坐标,其中geometries
是我的轮廓和点数组:
var coordinates = geometries.map(function(outline) {return outline.geometry.coordinates});
毫不奇怪,这将创建以下数组:
[[[[-72.68639118392117,41.66733032827929],[-72.68630366033922,41.667449647115724], ...]], [-72.78630766033722,41.767349642115724]]
扁平化此数组会导致配对的坐标对丢失,因此我不完全确定如何做到这一点。 有什么想法吗?
这个怎么样?
var geometries = [
// point
{
geometry: {
coordinates: [1, 2],
},
},
// outline
{
geometry: {
coordinates: [
[
[3, 4],
[5, 6],
],
],
},
},
];
var coordinates = geometries.map(function(outline) {
var coords = outline.geometry.coordinates;
if (typeof coords[0] === 'number') {
return [coords];
} else {
return coords[0];
}
}).reduce(function (prev, next) {
return prev.concat(next);
}, []);
console.log(coordinates);
// Output:
// [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]
一种方法是标准化坐标输出。 如果 outline
s 给你一个配对坐标数组,你可以让 point
s通过将其包装为单个元素数组来做同样的事情。
大纲
[[a, b], [c, d], [e, f], ...]
点
[[a, b]]
这样,当您将它们组合在一起时,它们都具有相同的形状/维度。 此时,您可以使用@dandavis'技术展平一次。
如果您能够使用instanceof
来确定对象是轮廓还是点,则可以使用以下方法。
var coordinates = geometries.map(function(outline_or_point) {
return outline_or_point instanceof outline ? outline.geometry.coordinates : [point.geometry.coordinates];
});
如果无法instanceof
,您可以进行一些鸭子键入,例如,通过检查outline_or_point
是数组还是数字。
var coordinates = geometries.map(function(outline_or_point) {
return typeof outline_or_point[0] == 'number' ? [point.geometry.coordinates] : outline.geometry.coordinates;
});
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 在Javascript中转换对象数组
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串