0

我正在编写这段代码来将方位角转换为人类可红色,但转换并不更准确,在度数略小于 360 的情况下。

function azimutHuman(ang) {     //can be 0 - 360

    var azimuthHumans = [
              'Nord','Nord-NE','Nord-Est','Est-NE',
              'Est','Est-SE','Sud-Est','Sud-SE',
              'Sud','Sud-SO','Sud-Ovest','Ovest-SO',
              'Ovest','Ovest-SO','Nord-Ovest','Nord-NO'];

    return azimuthHumans[ Math.round(ang/22.5) ];
}

例如:

azimutHuman(350);   //return undefined instead of "Nord"
4

2 回答 2

1

350 -> 360 = 0->10 : 360 和 0 一样是北。

所以你需要再次添加一个元素“Nord”。现在试试这个功能:

function azimutHuman(ang) {     //can be 0 - 360

    var azimuthHumans = [
              'Nord','Nord-NE','Nord-Est','Est-NE',
              'Est','Est-SE','Sud-Est','Sud-SE',
              'Sud','Sud-SO','Sud-Ovest','Ovest-SO',
              'Ovest','Ovest-SO','Nord-Ovest','Nord-NO','Nord'];

    return azimuthHumans[ Math.round(ang/22.5) ];
}
于 2014-02-12T22:57:34.070 回答
0

Math.round(350/22.5) = 16您在索引 16 处的数组未定义。向其中添加第 16 个元素,Nord再次应该可以工作

于 2014-02-12T22:53:27.933 回答