从两个不同的类型数组中找出共同的价值
Find out common value from two different Type Array
我有两个 Array 具有不同的 Data Types
假设 Array1 是 String
的 [String] 数组
假设数组 2 是 Struct
的 [自定义对象] 数组
求个码
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)
现在我们想通过匹配 serialNo 键从 localArray 和 tempArray 中获取公共值
最后我想在validScannedData对象
中使用字符串数组格式
预期输出:
有效数据:["12220116033","12198144025","12222383027","12198213032"]
无效数据:["12199690049"]
我试过了,但它打印了自定义对象数组
let a = tempArray.filter () { localArray.contains([=11=].serialNo) }
print(a)
提前致谢
使用 forEach
迭代您的元素,然后检查并追加到根据数组。
localArray.forEach { number in
arrayObj.contains(where: {[=10=].serialNo == number}) ? validScannedData.append(number) : inValidScannedData.append(number)
}
print(validScannedData)
print(inValidScannedData)
我有两个 Array 具有不同的 Data Types
假设 Array1 是 String
的 [String] 数组假设数组 2 是 Struct
的 [自定义对象] 数组求个码
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)
现在我们想通过匹配 serialNo 键从 localArray 和 tempArray 中获取公共值
最后我想在validScannedData对象
中使用字符串数组格式预期输出:
有效数据:["12220116033","12198144025","12222383027","12198213032"]
无效数据:["12199690049"]
我试过了,但它打印了自定义对象数组
let a = tempArray.filter () { localArray.contains([=11=].serialNo) }
print(a)
提前致谢
使用 forEach
迭代您的元素,然后检查并追加到根据数组。
localArray.forEach { number in
arrayObj.contains(where: {[=10=].serialNo == number}) ? validScannedData.append(number) : inValidScannedData.append(number)
}
print(validScannedData)
print(inValidScannedData)