Javascript,应用地图功能,但有两个可能的功能

Javascript, Apply map function but with two possible functions

我目前正在做一个项目,需要我(从机器上)获取长度列表并将它们转换成时间列表。 机器可以以两种不同的速度运行,其中我在较快速度值之前用 'F' 表示,在较慢速度值之前没有 'F' 表示。 这是我的值数组的示例: [1.234,2.13,F1.23,5.5,F2.3] 要将这些转换为时间,我需要将前面没有和 F 的每个元素除以 10,将前面有 F 的每个元素除以 100,然后删除 F。 预期的数组结果应该类似于: [0.1234,0.213,0.0123,0.55,0.023]

我知道如何使用地图函数,如果我只想应用一个函数,这会起作用,例如 .map[x => x/10]。我也知道我可以使用 for 循环,但我开始这个项目是为了学习其他不使用这些的方法。 我非常不确定如何根据起始字符而不是每个元素应用另一个函数。也许有一个我遗漏的命令可以在这里工作?

虽然您 可以 使用单独的 map 回调来执行此操作,但通常的解决方案是在单个 map 回调中分支或使用条件相反。

.map(x => x.charAt(0) === "F" ? +x.substring(1) : x / 10)

或在别处定义的单独函数:

.map(x => x.charAt(0) === "F" ? convertF(x) : convertNonF(x))

如果你想用两个 map 回调来代替,有多种方法可以做到这一点,但它们都比上面的更复杂,而且几乎所有方法都涉及 branching/conditionals 无论如何(我能想到的唯一一个不使用 branching/conditionals 的是 真的 过于复杂,涉及 [index, value] 对的中间数组,两个 filter 调用,以及各种其他开销)。