Home > Blockchain >  Find out common value from two different Type Array
Find out common value from two different Type Array

Time:11-07

I have two Array with different Data Types

Assume Array1 is an [String] array of String

Assume Array 2 is an [Custom Objects] array of Struct

Pls find a code

struct ScanData{
    var serialNo : String!
    var intNo : String!
    init(serialNo : String, intNo : String) {
        self.serialNo = serialNo
        self.intNo = intNo
    }
}
var validScannedData : [String] = []
var inValidScannedData : [String] = []
var arrayObj = [ScanData(serialNo: "12220116033", intNo: "SN6AT4.270"),ScanData(serialNo: "12198144025", intNo: "SN6AT4.280"),ScanData(serialNo: "12222383027", intNo: "SN6AT4.130"),ScanData(serialNo: "12198213032", intNo: "SN6AT5.260"),ScanData(serialNo: "", intNo: "")]
//print(arrayObj)
//ScanData(serialNo: "12199690049", intNo: "SN6AT6U100")
var localArray = ["12220116033","12198144025","12222383027","12198213032","12199690049"]
let tempArray = arrayObj.filter { data in
    return data.serialNo != "" || data.intNo != ""
}
print(tempArray.count)

Now we want to get common values from localArray and tempArray by matching serialNo key

Finally i want to have Array of String Format in validScannedData object

Expected Output :

Valid data : ["12220116033","12198144025","12222383027","12198213032"]

Invalid data : ["12199690049"]

I tried this but its prints custom object array

let a = tempArray.filter () { localArray.contains($0.serialNo) }
print(a)

Thanks in advance

CodePudding user response:

Use forEach to iterate your element and then check and append to the according to array.

localArray.forEach { number in
    arrayObj.contains(where: {$0.serialNo == number}) ? validScannedData.append(number) : inValidScannedData.append(number)
}
print(validScannedData)
print(inValidScannedData)

  • Related