我目前正在开发一个项目,该项目需要我(从机器)获取长度列表并将其转换为时间列表。该机器可以以两种不同的速度运行,其中我在较快的速度值之前用“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 循环,但我开始这个项目是为了学习不使用这些循环的其他方法。我非常不确定如何根据起始字符应用另一个函数,但是不是每个元素。也许我缺少一个可以在这里工作的命令?
1 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
虽然您可以使用单独的map
回调来执行此操作,但通常的解决方案是在单个map
回调中分支或使用条件。
.map(x => x.charAt(0) === "F" ? +x.substring(1) : x / 10)
或具有单独的函数,在其他地方定义:
.map(x => x.charAt(0) === "F" ? convertF(x) : convertNonF(x))
如果你想用两个map
回调来做到这一点,有多种方法可以做到这一点,但它们都比上面的更复杂,而且几乎所有的方法都涉及分支/条件(我能立即想到的唯一一种方法)不使用分支/条件确实过于复杂,涉及中间数组对[index, value]
、两次filter
调用和各种其他开销)。
添加回答
举报
0/150
提交
取消