gpt4 book ai didi

javascript - 具有多种类型的内联解析数组

转载 作者:行者123 更新时间:2023-11-30 08:23:02 25 4
gpt4 key购买 nike

我有一个不受我控制的数据源,它为我提供了一个包含不同数据类型的数组,我需要在使用前对其进行处理。真正的数据源有超过 2 种数据类型,但它们总是以相同的已知顺序排列。

我目前使用中间值 (rawValues),但非常想避免这种情况。

const rawValues = getData(); // e.g. ["12.5", "42", "hello"]

const [num1, num2, text] = [
Number(rawValues[0]),
Number(rawValues[1]),
rawValues[2]
];

我知道的唯一内联选项是有点乱的 .map() 例如:

const [num1, num2, text] = getData()
.map((data, i) => i < 2 ? Number(data) : data);

我还想避免这种方法的“神奇数字 2”和有争议的不可读性。

我考虑过在像这样的映射中测试每个数组成员的弱相等性以获取强制能力 (Number(data) == data)

const [num1, num2, text] = getData()
.map((data, i) => Number(data) == data ? Number(data) : data);

这具有使转换更加灵活的额外好处,但如果传入的数字不能完全由 JavaScript 标准数字类型表示,则可能会出现问题。

只是重申我的问题——处理这些传入数据的最佳(或最惯用的)方法是什么,最好不要创建任何临时变量?这与代码打高尔夫球无关(我不担心 # 行代码),而是关于避免使用临时值污染范围的可读代码。

最佳答案

我将已知类型表示为类型数组(它们是可以调用的构造函数):

const types = [Number, Number, String];

然后将传入的数据处理为

const [num1, num2, text] = getData().map((x, i) => types[i](x));

上面的设计是为了满足您不希望有任何中间变量的愿望,但我真的不认为担心这一点有什么意义。它们基本上是免费的,甚至在某些情况下从自文档化代码的 Angular 来看是有益的。

关于javascript - 具有多种类型的内联解析数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50298243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com