axure商城

【Axure 教程】中继器,你这个“渣男”(番外篇)

本文由微信公众号:产品锦李(ID:IMPM996) 授权发布,未经许可,禁止转载,本教程源文件免费下载传送门>>

Axure 中继器提供了非常丰富的功能,但却没有现成的数据统计功能,没有办法像 Excel 表格那样,通过简单的公式就能够统计出我们所需要的数据,但这同样难不倒产品经理,本篇文章,带你了解怎么统计中继器的各种数据。

点击 传送门>> 体验。

本文需要你先了解中继器的基础知识,如果你还不懂中继器的使用,可先阅读以下文章:

【Axure 教程】中继器,你这个“渣男”(基础篇)

【Axure 教程】中继器,你这个“渣男”(进阶篇)

本文所有统计数据,需要先在 Axure 画布中添加一个中继器元件,中继器中只需要一个字段 num,并随机添加10行数据,其中至少有两个数是重复的。

【Axure 教程】中继器,你这个“渣男”(番外篇)

为了方便预览时看到所有数值,在中继器内的矩形设置【载入时设置文本】的事件(你也可以在中继器的【每项加载】事件中设置,由于本文很多统计数据都是写在此事件中,所以我单独把与统计无关的事件挪到此处)。

【Axure 教程】中继器,你这个“渣男”(番外篇)

接下来开始介绍各个数据如何统计。

求和

首先添加全局变量 sum,然后在中继器【每项加载】时,设置变量为【sum Item.num】,最后把 sum 赋值给中继器下方的文本。

【Axure 教程】中继器,你这个“渣男”(番外篇)

预览效果如下:

【Axure 教程】中继器,你这个“渣男”(番外篇)

解释一下,中继器的【每项加载】是一个循环事件,有多少数据就会调用多少次,所以上述事件我们可以按如下图理解:

【Axure 教程】中继器,你这个“渣男”(番外篇)

加载第1项时:sum=23

加载第二项:sum=sum 45=23 45=68

以此类推,每加载一项,都是将之前已加载的所有项目的总和加上当前项目的数值,最后一项加载结束后,刚好就是所有项目的总和。

平均数

平均数=项目总和/项目数量,项目总和我们刚刚已经能够求出来,而项目数量通过 Axure 内置的中继器函数 dataCount 可以直接就获得,这样要计算平均值就很简单了。

【Axure 教程】中继器,你这个“渣男”(番外篇)

预览效果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

最大值

求最大值的思路是这样的,假设中继器中有3行,对应3个数,分别是:

x = 1

y = 3

z = 2

现在需要求出他们之间的最大值,我们可以添加变量 max,首先将第一个数 x 赋值给 max,则有:max = 1。

接下来将 max 与其他两个数分别比较,如果 max 大于或等于比较的数,就什么都不做,如果 max 小于比较的数,就将该数赋值给 max,则有:

加载第1个数:max = 1

加载第2个数:max < y,max = 3 加载第3个数:max > z,max = 3(max 没有变化)

3轮结束之后,max 就获得了3个数中的最大值3。

在 Axure 中添加事件如下:

【Axure 教程】中继器,你这个“渣男”(番外篇)

预览结果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

最小值

最小值的思路跟最大值是一样的,只要把逻辑反过来写就可以了:

【Axure 教程】中继器,你这个“渣男”(番外篇)

结果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

中位数

要找到中位数,首先得知道中位数的定义:将一组数据按照由小到大(或由大到小)的顺序排列,如果数据的个数是奇数,则称处于中间位置的数为这组数据的中位数;如果数据的个数是偶数,则称中间两个数据的平均数为这组数据的中位数。

从定义我们可以知道,总共有两种情况,就是数据的个数分别是奇数和偶数,找中位数实际上就是在找对应索引(index)的数据,以上两种情况对应的索引分别为:

奇数:(数据数量 1)/2

偶数:((数据总数/2) ((数据总数 2)/2))/2

偶数的公式看起来复杂,实际上就是取位于中间的两个数的平均值。

由于数据是杂乱无章的,所以中继器载入时,我们需要先对数据进行排序:

【Axure 教程】中继器,你这个“渣男”(番外篇)

奇数的场景比较容易,首先添加全局变量 median 来保存中位数,接着事件设置如下:

【Axure 教程】中继器,你这个“渣男”(番外篇)

其中【dataCount%2】表示求总数/2的余数,余数为0表示偶数,余数不为0表示奇数。

偶数就比较复杂了,我们需要额外用到另外两个变量 median_a 和 median_b 来分别保存中间的两个数值。

【Axure 教程】中继器,你这个“渣男”(番外篇)

最后再求 median_a 和 median_b 的平均值就可以了,事件的条件就是当数据已经加载到最后一条并且 median_a 和 median_b 都不为空。

【Axure 教程】中继器,你这个“渣男”(番外篇)

偶数行预览效果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

随意删掉一行,看看奇数行的效果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

统计数值出现次数

比如我们需要统计“23”总共出现多少次,我们可以添加全局变量 count,然后逐一判断每个值是否等于23,如果是,就给 count 加1,全部数据加载完成后,就可以得到23在所有数据中出现的次数:

【Axure 教程】中继器,你这个“渣男”(番外篇)

预览效果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

找到指定值的索引

比如我们想要找“23”所在的索引,找索引有3种情况:

1、第一次出现的索引

2、最后一次出现的索引

3、所有出现过的索引

以上3个索引我们分别用变量 first_index、last_index、all_index 来记录。

这3个索引中,找最后一次出现的索引是最容易的,每项加载时,只要值等于“23”,就把对应索引赋值给 last_index,如果23在数据中出现多次,则会进行多次赋值,最后保存到的数值就是23最后一次出现的索引:

【Axure 教程】中继器,你这个“渣男”(番外篇)

预览:

【Axure 教程】中继器,你这个“渣男”(番外篇)

而要找第一次出现的索引,就要避免数据出现多次时重复赋值的情况,我们可以加一个判断,就是只有 first_index 不为空的时候,才给变量赋值,当23第一次出现时,变量为空,给变量赋值,当23第二次出现时,变量不为空,不赋值,所以最后只会保存到23第一次出现的索引:

【Axure 教程】中继器,你这个“渣男”(番外篇)

预览:

【Axure 教程】中继器,你这个“渣男”(番外篇)

最后找所有索引,跟求和的逻辑相似,但这次我们不是要求数据总和,而是要将每个索引值保存下来,给 all_index 循环赋值【[[all_index]][[Item.index]]、】,注意最后有个、用来分隔每个索引,显示的时候做了一个处理,截取掉最后一个字符“、”。

【Axure 教程】中继器,你这个“渣男”(番外篇)

看看效果:

【Axure 教程】中继器,你这个“渣男”(番外篇)

以上便是本文的全部内容,感谢阅读。

给TA打赏
共{{data.count}}人
人已打赏
案例教程

验证码,除了 12306,我还没有服过谁(图片验证篇)

2023-11-9 13:51:12

案例教程

Axure 中继器拖拽排序

2023-11-20 11:52:29

axure商城
2 条回复 A文章作者 M管理员
  1. 努力拼搏的80后

    求中位数的偶数行设置 [[Item.isLast]]=true,这里是怎么设置的,能方便截图看下吗,谢谢!🙏

    • 产品锦李

      Item.isLast 是 Axure 中继器的内置函数,用于判断是否已经加载完最后一行,这是源文件的下载链接,有兴趣可以看看:https://li-canrong.gitee.io/material-library/Axure%E6%95%99%E7%A8%8B%E5%8E%9F%E5%9E%8B%E6%BA%90%E6%96%87%E4%BB%B6/%E4%B8%AD%E7%BB%A7%E5%99%A8%EF%BC%8C%E4%BD%A0%E8%BF%99%E4%B8%AA%E2%80%9C%E6%B8%A3%E7%94%B7%E2%80%9D%EF%BC%88%E7%95%AA%E5%A4%96%E7%AF%87%EF%BC%89.rp

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索