为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕少森 2023-10-20 16:32:14
我目前正在开发一个项目,该项目需要我(从机器)获取长度列表并将其转换为时间列表。该机器可以以两种不同的速度运行,其中我在较快的速度值之前用“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调用和各种其他开销)。


查看完整回答
反对 回复 2023-10-20
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信