我有一個布林值陣列、標題陣列和一個字串陣列,它們必須向用戶顯示他們選擇的產品。
array1 = ["false","true","false"]
array2 = ["apples","bananas","coconuts"]
selectedProducts[String] = []
我需要檢查 array1 內部是否有一些“真”,然后檢索它的索引并將產品名稱附加到 selectedProducts 的相同索引處。
用戶可以選擇所有這些,其中一些或不選擇。
也許連接 array1 和 array2 的索引是一個糟糕的決定。
我檢查是 !array1.isEmpty 但后來我不知道如何使這項作業。
謝謝
uj5u.com熱心網友回復:
用于zip()組合陣列并compactMap()選擇與 配對的那些值true:
let array1 = ["false","true","false"]
let array2 = ["apples","bananas","coconuts"]
let selectedProducts = zip(array1, array2).compactMap { $0 == "true" ? $1 : nil }
print(selectedProducts)
香蕉
注意:如果array1containsBool而不是String,則傳遞給的閉包compactMap可能只是{ $0 ? $1 : nil }.
uj5u.com熱心網友回復:
你可以試試
let res = array2.indices.compactmap { array1[$0] == "true" ? array2[$0] : nil }
雖然最好將其設為純布林值
array1 = [false,true,false]
然后
let res = array2.indices.compactmap { array1[$0] ? array2[$0] : nil }
順便說一句,使其成為strcut/class項比擁有兩個陣列更好
struct Item {
let name:String
var isSelected:Bool
}
然后
let arr = [Item]() // fill it with your data
最后
let res = arr.filter { $0.isSelected }
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486937.html
上一篇:即使使用最簡單的視圖,UIHostingControllerintrinsicContentSize在初始化時也不正確
