当我们有内部数组并且需要在内部数组

时间:2018-05-30 11:53:41

标签: swift filter swift4

我们说我的数据如下。

[
    {
        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
          ^^^

有人能指出我如何实现这个过滤器吗?

2 个答案:

答案 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})
}