需求背景:
在购物的过程中,挑选商品时,通常都要选择某个商品的规格,例如买衣服,需要从颜色、尺寸当中分别选中对应的规格才能确定买哪件衣服,这就需要用到多数组组合算法。
var combinationArray = [[String]]()
override func viewDidLoad() {
super.viewDidLoad()
let array1 = ["黑色", "白色", "红色"]
let array2 = ["S", "M", "L", "XL", "XXL"]
let array3 = ["A", "B", "C"]
getCombination(kid: 0, inputArray: [array1, array2, array3], addArray: [String]())
print(combinationArray)
}
func getCombination(kid: Int,
inputArray: [[String]],
addArray: [String]) {
if kid < inputArray.count {
let dataArr = inputArray[kid]
if dataArr.count == 0 {
return
}
for i in 0 ..< dataArr.count {
var newArr = addArray
newArr.append(dataArr[i])
getCombination(kid: kid + 1, inputArray: inputArray, addArray: newArr)
}
} else {
var dataArr = [String]()
for i in 0 ..< addArray.count {
dataArr.append(addArray[i])
}
combinationArray.append(dataArr)
}
}
打印结果:
[["黑色", "S", "A"], ["黑色", "S", "B"], ["黑色", "S", "C"], ["黑色", "M", "A"], ["黑色", "M", "B"], ["黑色", "M", "C"], ["黑色", "L", "A"], ["黑色", "L", "B"], ["黑色", "L", "C"], ["黑色", "XL", "A"], ["黑色", "XL", "B"], ["黑色", "XL", "C"], ["黑色", "XXL", "A"], ["黑色", "XXL", "B"], ["黑色", "XXL", "C"], ["白色", "S", "A"], ["白色", "S", "B"], ["白色", "S", "C"], ["白色", "M", "A"], ["白色", "M", "B"], ["白色", "M", "C"], ["白色", "L", "A"], ["白色", "L", "B"], ["白色", "L", "C"], ["白色", "XL", "A"], ["白色", "XL", "B"], ["白色", "XL", "C"], ["白色", "XXL", "A"], ["白色", "XXL", "B"], ["白色", "XXL", "C"], ["红色", "S", "A"], ["红色", "S", "B"], ["红色", "S", "C"], ["红色", "M", "A"], ["红色", "M", "B"], ["红色", "M", "C"], ["红色", "L", "A"], ["红色", "L", "B"], ["红色", "L", "C"], ["红色", "XL", "A"], ["红色", "XL", "B"], ["红色", "XL", "C"], ["红色", "XXL", "A"], ["红色", "XXL", "B"], ["红色", "XXL", "C"]]