Loadash无法验证javascript中的字符串负值

时间:2019-04-01 11:13:13

标签: javascript react-native

我正在从事React Native项目。我从服务器得到响应,响应如下。

        {
        "id": 12,
        "year": 2019,
        "percentage": "-0.45",
    }, {
        "id": 13,
        "year": 2018,
        "percentage": "4.45",
    },

因此,我必须检查是否为空或不是特定字段,如果为空,则必须在UI中将该标签设置为 0

为此,我正在使用Loadash库进行验证检查。

 value: !isEmpty(get(item, 'percentage').replace('-', '').replace(/[,-]/g, '') ? get(item, 'percentage') : '0')

但是,它不能验证字符串内的负值。 有什么建议吗?

3 个答案:

答案 0 :(得分:2)

最后关闭括号。这是错误的地方。将其放在?之前:

value: !isEmpty(get(item, 'percentage').replace('-', '').replace(/[,-]/g, '')) ? get(item, 'percentage') : '0'

长行总是很难阅读和调试,因此请尝试分解代码。

let percentage = get(item, 'percentage'),
    p = percentage.replace(/[,-]/g, '');

value : !isEmpty(p) ? p : 0;

如果您这样做了,您会发现自己的错误是:

 value : !isEmpty(p ? p : 0);

答案 1 :(得分:1)

JavaScript区分大小写。因此,将percentage更改为Percentage

value: !isEmpty(get(item, 'Percentage').replace('-', '').replace(/[,-]/g, '') ? 
    get(item, 'Percentage') : '0')

答案 2 :(得分:0)

有两种方法可以做到这一点(第一种可能无法在React Native中使用) 将标签的默认值保持为0,这样,只要您在dom或JSON本身中收到一些空字符串,它就会处理该问题。正如我所说,React不支持它。

第二。 在前端装订之前进行检查。 一种。检查单个键的值是否为空,NA或未定义,然后将其设置为0(根据需要)。例如,如果实例为空,则使用bind函数将其设置为0或使用此函数设置变量。这是一种简单的方法。

在ES6中使用_.get

_.get的优点是,您可以省略继续检查是否存在属性,这是必要的。

希望这会有所帮助。