我试图在某些条件下过滤对象数组:
filtered_shifts = myShifts.filter{$0.regionName == region && $0.cityName == city && $0.idNationality == idn && $0.quantityStaff != 0 && $0.shiftDate > todaydate}
我想更多地过滤它,如果有一个shiftType ==“night”和shiftType ==“day”为同一个shiftDate然后添加到我的过滤的移位数组。
如果相同日期有shift类型= day AND type = night,则将其添加到我的过滤数组
我怎样才能实现这一目标?
例如
让我们说
myShifts = {
"id": 50,
"id_region": 1,
"id_city": 2,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "day",
"weekday": "wed",
"quantity_staff": 5,
"lead_hours": 3,
"created_at": "2018-05-13 16:27:21",
"updated_at": "2018-05-13 16:27:21",
"deleted_at": null,
"city_name": "Khobar",
"region_name": "Eastren"
},
{
"id": 70,
"id_region": 1,
"id_city": 1,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "day",
"weekday": "wed",
"quantity_staff": 12,
"lead_hours": 3,
"created_at": "2018-05-21 14:03:02",
"updated_at": "2018-05-21 14:03:02",
"deleted_at": null,
"city_name": "Dammam",
"region_name": "Eastren"
},
{
"id": 74,
"id_region": 1,
"id_city": 1,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "night",
"weekday": "wed",
"quantity_staff": 20,
"lead_hours": 3,
"created_at": "2018-05-21 14:40:56",
"updated_at": "2018-05-21 14:40:56",
"deleted_at": null,
"city_name": "Dammam",
"region_name": "Eastren"
},
{
"id": 4,
"id_region": 1,
"id_city": 1,
"id_nationality": 4,
"id_service": 1,
"shift_date": "2018-05-15 00:00:00",
"shift_type": "night",
"weekday": "tue",
"quantity_staff": 5,
"lead_hours": 2,
"created_at": "2018-04-23 11:46:20",
"updated_at": "2018-05-15 10:33:29",
"deleted_at": null,
"city_name": "Dammam",
"region_name": "Eastren"
}
我想:
filtered_Shifts = {
"id": 70,
"id_region": 1,
"id_city": 1,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "day",
"weekday": "wed",
"quantity_staff": 12,
"lead_hours": 3,
"created_at": "2018-05-21 14:03:02",
"updated_at": "2018-05-21 14:03:02",
"deleted_at": null,
"city_name": "Dammam",
"region_name": "Eastren"
},
{
"id": 74,
"id_region": 1,
"id_city": 1,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "night",
"weekday": "wed",
"quantity_staff": 20,
"lead_hours": 3,
"created_at": "2018-05-21 14:40:56",
"updated_at": "2018-05-21 14:40:56",
"deleted_at": null,
"city_name": "Dammam",
"region_name": "Eastren"
},
在2018-06-06日期,有shift_type = night AND day ...
答案 0 :(得分:0)
import Foundation
struct MyShifts: Codable {
let id :Int
let id_region: Int
let id_city: Int
let id_nationality: Int
let id_service: Int
let shift_date: String
let shift_type: String
let weekday: String
let quantity_staff : Int
let lead_hours: Int
let created_at: String
let updated_at: String
let deleted_at:String
let city_name: String
let region_name: String
}
let myShifts = """
[{
"id": 50,
"id_region": 1,
"id_city": 2,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "day",
"weekday": "wed",
"quantity_staff": 5,
"lead_hours": 3,
"created_at": "2018-05-13 16:27:21",
"updated_at": "2018-05-13 16:27:21",
"deleted_at": "2018-05-13 16:27:21",
"city_name": "Khobar",
"region_name": "Eastren"
},
{
"id": 70,
"id_region": 1,
"id_city": 1,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "day",
"weekday": "wed",
"quantity_staff": 12,
"lead_hours": 3,
"created_at": "2018-05-21 14:03:02",
"updated_at": "2018-05-21 14:03:02",
"deleted_at": "2018-05-15 10:33:29",
"city_name": "Dammam",
"region_name": "Eastren"
},
{
"id": 74,
"id_region": 1,
"id_city": 1,
"id_nationality": 3,
"id_service": 1,
"shift_date": "2018-06-06 00:00:00",
"shift_type": "night",
"weekday": "wed",
"quantity_staff": 20,
"lead_hours": 3,
"created_at": "2018-05-21 14:40:56",
"updated_at": "2018-05-21 14:40:56",
"deleted_at": "2018-05-15 10:33:29",
"city_name": "Dammam",
"region_name": "Eastren"
},
{
"id": 4,
"id_region": 1,
"id_city": 1,
"id_nationality": 4,
"id_service": 1,
"shift_date": "2018-05-15 00:00:00",
"shift_type": "night",
"weekday": "tue",
"quantity_staff": 5,
"lead_hours": 2,
"created_at": "2018-04-23 11:46:20",
"updated_at": "2018-05-15 10:33:29",
"deleted_at": "2018-05-15 10:33:29",
"city_name": "Dammam",
"region_name": "Eastren"
}]
""".data(using: .utf8)! // our native (JSON) data
let myShiftsObjectArray = try JSONDecoder().decode([MyShifts].self, from: myShifts) // decoding our data
myShiftsObjectArray.forEach { print($0) } // decoded!
var Dates = Set<String>()
var uniqueArray = [MyShifts]()
for shift in myShiftsObjectArray {
if !Dates.contains(shift.shift_date) {
uniqueArray.append(shift)
Dates.insert(shift.shift_date)
}
}
print(uniqueArray.count)
var NewFilteredShifts = NSMutableArray()
for loop in uniqueArray
{
for loopAll in myShiftsObjectArray
{
if loop.shift_date == loopAll.shift_date && !NewFilteredShifts.contains(loopAll)
{
if loopAll.region_name == "Eastren" && loopAll.city_name == "Dammam" && loopAll.id_nationality == 4 && loopAll.quantity_staff != 0 && (loopAll.shift_type == "day" || loopAll.shift_type == "night")
{
NewFilteredShifts.add(loopAll)
}
}
}
}
print(NewFilteredShifts)
我希望这会帮助你。