如何在Power FX中实现JavaScript筛选逻辑(Canvas应用场景)
把JavaScript车辆特征筛选逻辑转换为Power FX代码
原JavaScript逻辑说明
你的JS代码实现的是:筛选出所有车辆特征都属于选中特征集合的车辆(即车辆的特征集合是选中特征的子集)。以示例数据为例,选中["Bow", "Row"]时,只有name:'hello world'的车辆会被筛选出来。
如果你的实际需求是车辆特征完全包含所有选中特征(即选中的每个特征都存在于车辆的特征中,车辆可以有额外特征),那原JS逻辑需要调整,对应的Power FX也会不同,下面会分别说明。
针对Canvas应用的Power FX实现
场景1:匹配原JS逻辑(车辆特征全属于选中集合)
在Canvas应用中,selectedFeaturesToFilter对应组合框的Combobox.SelectedItems,且Vehicle与Vehicle Features是多对多关系,可使用以下代码获取筛选后的车辆集合:
Filter( Vehicles, // 检查当前车辆的所有特征都在选中的特征集合里 All( ThisItem.'Vehicle Features', ThisRecord in Combobox.SelectedItems ) )
场景2:匹配需求描述(车辆特征包含所有选中特征)
如果你的实际需求是筛选出包含所有选中特征的车辆(车辆可以有额外特征),对应调整后的Power FX代码如下:
Filter( Vehicles, // 检查所有选中的特征都存在于当前车辆的特征集合里 All( Combobox.SelectedItems, ThisRecord in ThisItem.'Vehicle Features' ) )
关键说明
All()函数用于实现嵌套的遍历检查,替代JS中的every()方法;- 多对多关系下,
ThisItem.'Vehicle Features'会返回当前车辆关联的所有特征集合; Combobox.SelectedItems是组合框选中的特征项集合,需确保组合框的Items属性绑定的是Vehicle Features实体。
内容的提问来源于stack exchange,提问作者Prashant Pokhrel
相关产品推荐
相关产品推荐

