永洪tech-zyc 发表于 2021-4-25 15:24:33

如何解决列表参数组件length方法获取长度不一致问题

不知道大家在使用列表参数组件时有没有遇到单选或者多选时 利用length方法判断的长度存在问题。

如下图所示:


当列表参数勾选一个时,输出length竟然为4 而不是 1!!!
多选时输出的length长度就是正常的。


这是什么原因呢?原来这是有js语法特性导致的。
javascript是弱类型,所以会根据值确定变量的类型,无法固定为数组。


当单选时,列表参数值是字符串,因此他输出的length就是字符串的长度,而多选时他是数组,数组的length就是正确的勾选值个数。


这时我们可以通过自定义一个方法,人为的规避这个问题,在方法中提前判断值的类型是数组还是字符串。如下示例:
function plen(pm) {
if(pm == null) {
return 0;
}
if(pm instanceof Array) {
return pm.length;
}

return 1;
}


测试效果如下:

单选多选均可正常




雨淋的猫 发表于 2022-9-1 09:55:26

1

yhdata_i7P1MLIv 发表于 2023-8-2 14:07:09

{:4_93:}

烽火连三月 发表于 2023-8-4 11:15:22

收到,多谢分享!

烽火连三月 发表于 2023-8-4 11:15:25

收到,多谢分享!

火将军 发表于 2024-2-8 19:13:12

666

火将军 发表于 2024-2-11 12:29:46

新年快乐
页: [1]
查看完整版本: 如何解决列表参数组件length方法获取长度不一致问题