需求:在一个一维数组中,需要等分成为二维数组
例:[1,2,3,4,5,6,7] => [[1,2],[3,4],[5,6],[7]]
利用 stride 函数进行等分
OC
- (NSArray *splitArray : (NSArray *array withSubSize : (int)subSize{
//数组将被拆分成指定长度数组的个数
unsigned long count = array.count % subSize == 0 ? (array.count /
subSize) : (array .count / subsize + 1);
用来保存指定长度数组的可变数组对象
NSMutableArray *arr = [[NSMutableArray alloc] init];
//利用总个数进行循环,将指定长度的元素加入数组for (int i=0; i < count; i ++){
//数组下标
int index =i * subsize;
//保存拆分的固定长度的数组元素的可变数组
NSMutableArray *arr1 = [[NSMutableArray alloc] init];
//移除子数组的所有元素
[arr1 removeAllObjects];
int i = index ;
//将数组下标乘以1、2、3,得到拆分时数组的最大下标值,但最大不能超过数组的总大小
while (j ‹ subSize×(i + 1) && j ‹ array.count) {
[arr1 addObject: [array objectAtIndex:j]];
j += 1;
}
//将子数组添加到保存子数组的数组中
[arr addObject: [arr1 copy]];
}
return [arr copy];
}
Swift
func splitArrays (array: [Any],size:Int) -> [Any] {
let count = array.count%size == 0 ? (array.count/size) :
(array.count/size+1)
var arr = [Any]()
for i in 0..<count{
let index = i*size
var arr1 = [Any]()
arr1.removeAll ()
var j = index
while (j<size*(i+1) && j < array.count ){
arr1.append(array[j])
j += 1
}
arr.append (arr1)
}
}
附加效果图: