数组是 String 类型。由于加""比较费时间,所以我把它写成Int。对不起。
我有两个数组说var array1 = [[1,2,3,4,5,6,7,8,9]]
和
var array2 = [[1,2,3,4],
[2,3,4,5],
[2,4,5,6],
[1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8],
[2,3,4,5,6,7,8]]
我必须比较array2
with 的每个数组元素,array1
并在元素不匹配的地方插入“-”。像这样,
var array2 = [[1,2,3,4,-,-,-,-,-],
[-,2,3,4,5,-,-,-,-],
[-,2,-,4,5,6,-,-,-],
[1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,-],
[-,2,3,4,5,6,7,8,-]]
我尝试遍历 array2 中的每个数组并将其与 array1 进行比较,比较索引并将 '-' 插入到索引位置i,但我得到了意想不到的结果。
更新
for item in array2{
var elementsArray = item
for i in stride(from: 0, to: elementsArray.count, by: 1) {
if elementsArray[i] != array1[i]
{
elementsArray.insert("-", at: i)
}
print("elemnt array.....", elementsArray, "\n\n")
}
}
我曾想过将每个 array2 数组与 array1 by 进行比较count
,找到不常见元素的索引,然后在该索引位置插入“-”。这种做法对吗?请帮我解决一下这个。
您需要一个新数组,其中的每一行都array2
被 的变体替换array1
,而该行中原本不存在的元素被替换为“-”:
let array1 = [1,2,3,4,5,6,7,8,9]
let array2 = [[1,2,3,4],
[2,3,4,5],
[2,4,5,6],
[1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8],
[2,3,4,5,6,7,8]]
let filled = array2.map { row in
array1.map {
row.contains($0) ? String($0) : "-"
}
}
for row in filled { print(row) }
输出:
["1", "2", "3", "4", "-", "-", "-", "-", "-"] ["-", "2", "3", "4", "5", "-", "-", "-", "-"] ["-", "2", "-", "4", "5", "6", " -", "-", "-"] ["1", "2", "3", "4", "5", "6", "7", "8", "9"] [" 1", "2", "3", "4", "5", "6", "7", "8", "-"] ["-", "2", "3", "4" ", "5", "6", "7", "8", "-"]
对于大型数组,这可以通过创建一个Set(row)
更快的包含检查来改进,或者通过利用元素按递增顺序排列。
您的方法无法正常工作,因为elementsArray
在对其进行迭代时进行了修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句