我需要存储一个Int数组的数组,用于有序重复(在Array中).
例:
>给定数组:
mainArray = [7,7,3,2,1,5,5]
现在我需要创建一个int数组的数组.
例:
Array [][] = [ [7,7],[3],[2,2],[1],[7],[5,5] ]
这是我有的:
for var i = 0; i < val.count; i++ { var columnArray = Array<Int>() for var j in 0...9 { if oldNum == val[j]{ columnArray.append(val[j]) } else { array.append(columnArray); //j += 1 break; } oldNum = val[j]; j += 1 } }
解决方法
您可以使用reduce方法.
let result = numbers.reduce([[Int]]()) { (var result,num) -> [[Int]] in if var lastSequence = result.last where lastSequence.first == num { result[result.count-1].append(num) } else { result.append([num]) } return result }
减少工作如何?
reduce将封闭中的逻辑应用于空的2D数组的整数([[Int]])和数字的第一个elm.
然后再次应用上一次迭代的结果和第二个整数数组…等等.
封闭中发生了什么?
if是否检查在结果中添加的最后一个数组中的数字是否等于当前检查的整数.如果这样,那个整数被添加到该数组.
测试
[[7,5]]
原文地址:https://www.jb51.cc/iOS/329022.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。