javascript - Javascript - 从值数组中查找线段的长度
问题描述
我正在做一个项目,该项目需要我解析一组值的数组,并计算出线段的长度。
我拥有的数组的形式是每个元素都是一个元组(xCoordinate, yCoordinate)
:
[[1.4,2.8],[2.3,2.2],[3.2,1.6],[3.8,1.1]]
我想计算数组元素 1 (1.4,2.8)
和 2之间的线段长度(2.3,2.2)
,然后是 2 和 3、3 和 4 等。此外,如果可能的话,我想避免使用 for 循环,以尝试增强我的知识函数式编程,来自 Java 背景。
我知道我可能必须将两个值都解析为映射函数,并执行如下计算sqrt((y2-y1)^2+(x2-x1)^2))
我xyDistance()
写了一个函数:
function xyDistance(from,to){
var xy=from.split(",");
var x1=xy[0];
var y1=xy[1];
var xy=to.split(",");
var x2=xy[0];
var y2=xy[1];
var dt = Math.sqrt((x2-x1)**2+(y2-y1)**2);
return dt;
}
当我手动输入坐标时,这似乎工作正常。然后我想我想要类似的东西
var map = arr.map(arr[x] => xyDistance(arr[x],arr[x+1]))
但这会引发错误。
解决方案
您可以使用Array#slice
删除最后一个元素,然后使用Array#map
withMath.hypot
来查找相邻线段之间的距离。
const arr = [[1.4,2.8],[2.3,2.2],[3.2,1.6],[3.8,1.1]];
const res = arr.slice(0, -1)
.map(([x, y], idx)=>Math.hypot(x - arr[idx + 1][0], y - arr[idx + 1][1]));
console.log(res);
推荐阅读
- android - Android 使用 Firebase 缓慢冷启动
- pytorch - Pytorch - 将张量的每一行投影到另一个张量的列空间
- python - Pyinstaller - 从不同路径导入模块(脚本为空,作为临时文件工作)
- amazon-web-services - 如何在 lambda 函数具有别名时部署大于一个 CloudFormation 堆栈的无服务器项目
- functional-programming - 使用方案调用函数
- html - 在内容存储库hugo中添加html文件并将其链接到scss
- javascript - 在yii2中使用canvas js时数组到字符串的转换
- c# - 文本、标签、base64 和 RegEx C#
- c - 如何返回指向内部具有各种结构的一维结构函数的指针?
- tensorflow2.0 - tensorflow 内置训练循环与自定义训练循环的性能