永洪社区

标题: 问一个脚本问题! [打印本页]

作者: 美滋滋    时间: 2024-4-2 10:45
标题: 问一个脚本问题!
今天发现了一个小的脚本问题,还请永洪开发人员确认一下。
首先我写了一段代码,判断下拉参数1组件中是否选中了"爱尔兰咖啡"
第二张图是返回结果图
可以看到,明明数组中存在"爱尔兰咖啡"这个数据,可以看到返回显示了"ok",但是indexOf函数,返回的却是-1 .


作者: yhdata_lyaa    时间: 2024-4-2 11:03
这样试试呢
debug(indexOf(a[i], "爱尔兰咖啡"))
作者: limited_Moore    时间: 2024-4-2 11:12
这里的a是一个数组,数组里面用indexof函数肯定是找不到,这个函数只能在字符串之间使用啊
作者: yhdata_lyaa    时间: 2024-4-2 11:24
limited_Moore 发表于 2024-4-2 11:12
这里的a是一个数组,数组里面用indexof函数肯定是找不到,这个函数只能在字符串之间使用啊 ...

对的
作者: 给给    时间: 2024-4-2 11:45
limited_Moore 发表于 2024-4-2 11:12
这里的a是一个数组,数组里面用indexof函数肯定是找不到,这个函数只能在字符串之间使用啊 ...

素的
作者: 美滋滋    时间: 2024-4-2 13:35
楼上的几位,你们真的不知道数组也可以使用 indexOf 函数吗?? 自己先去测试一下再来回复好吗??
无语

作者: 美滋滋    时间: 2024-4-2 13:38
补充一个数组使用 indexOf 函数的结果图
可以看到下面图中,图一是脚本,图二是返回值,返回值都是正确的


作者: yhdata_yzm    时间: 2024-4-2 14:16
怎么说呢,目前看起来get出来值定义是这样的[花茶,茶]而非我们定义的['花茶','茶'],前者的花茶和茶是数组对象中的对象,而后者是字符串,所以这个值是不对的。现在也没有什么版本把这个对象构造出了,使用indexOf的时候先把数组转成字符串吧。
作者: 美滋滋    时间: 2024-4-2 14:53
yhdata_yzm 发表于 2024-4-2 14:16
怎么说呢,目前看起来get出来值定义是这样的[花茶,茶]而非我们定义的['花茶','茶'],前者的花茶和茶是数组 ...

我的理解是:
1. 脚本中使用getSelsectedObjects方法获取的a首先确实是一个数组;
2. a 数组中的每一个元素并非是String 类型的。
3. 故此通过 indexOf 函数去匹配字符串时,匹配失败,返回值是 -1
4. 我尝试着做了一个新的测试,我将获取的a中的每一个元素利用tostring转换成字符类型后,再压到另外一个数组中,然后再使用 indexOf函数就正常了。代码如下:
var a = 列表参数1.getSelectedObjects();
var b = []
for(i=0;i<a.length;i++) {
        b.push(toString(a))
}
debug(b.indexOf("爱尔兰咖啡"))

通过上面的转换处理后,indexOf返回结果正常了。
那么问题又来了,如果说a中的元素并非是字符类型的,那么为什么判定 a[0] == "爱尔兰咖啡" 又可以得到true的结果呢?
作者: yhdata_yzm    时间: 2024-4-2 15:09
美滋滋 发表于 2024-4-2 14:53
我的理解是:
1. 脚本中使用getSelsectedObjects方法获取的a首先确实是一个数组;
2. a 数组中的每一个元 ...

1 2 3理解是正确的。
至于4来说可能是产品内部的逻辑了,有点深了
作者: 美滋滋    时间: 2024-4-2 15:21
yhdata_yzm 发表于 2024-4-2 15:09
1 2 3理解是正确的。
至于4来说可能是产品内部的逻辑了,有点深了

好的,清楚了。
总结一下,往往想当然的事情最容易被打脸。
本来想当然的indexOf函数返回的结果却出乎了我的意料。
所以得出的结论最好多多验证,看看是否真的无误。
作者: yhdata_yzm    时间: 2024-4-2 15:32
美滋滋 发表于 2024-4-2 15:21
好的,清楚了。
总结一下,往往想当然的事情最容易被打脸。
本来想当然的indexOf函数返回的结果却出乎了 ...

认真钻研也是件很好的事




欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4