我们说我的数据如下。
[
{
hotelName : "Hotel 1",
hotelType : 1
prices :
[
{
roomType: "Single Room",
price : 1231
},
{
roomType: "Twin Room",
price : 1232
},
{
roomType: "Triple Room",
price : 1233
},
]
},
{
hotelName : "Hotel 2",
hotelType : 2
prices :
[
{
roomType: "Single Room",
price : 1241
},
{
roomType: "Twin Room",
price : 1242
},
{
roomType: "Triple Room",
price : 1243
},
]
}
]
我想要的是以价格过滤酒店。
让我们说我想过滤以获得低于范围的酒店。
价格区间为1231-1233>>这将只给我1号酒店。
价格区间为1231-1431>>这将使我回到酒店1&酒店2。
我有相同类型的过滤器,但我只有1个价格,所以我在做的是如下。
finalArray = finalArray.filter() {
CGFloat(($0.prices![0].price)!) >= minValue
&&
CGFloat(($0.prices![0].price)!) <= maxValue
}
但是现在我有一系列的价格,所以我不知道如何处理这种情况。
问题在于
$0.prices![0].price
^^^
有人能指出我如何实现这个过滤器吗?
答案 0 :(得分:1)
你可以这样做:
$('.box-body').on('change',.....
答案 1 :(得分:0)
您只需要检查prices
数组中是否有与该标准不匹配的元素。您可以使用带有否定谓词的Array.contains
来实现此目的,以便contains
在找到错误值时立即返回(即检查低于最小值的值或大于最大值的值)
finalArray = finalArray.filter() { hotelInfo in
!hotelInfo.prices!.contains(where: {CGFloat($0) <= minValue}) && !hotelInfo.prices!.contains(where: {CGFloat($0) >= maxValue})
}