Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将循环计数放入数组索引中_Arrays_Swift - Fatal编程技术网

Arrays 将循环计数放入数组索引中

Arrays 将循环计数放入数组索引中,arrays,swift,Arrays,Swift,你好,我是SO的新成员,我需要一些帮助。有没有一种方法可以将循环计数的值作为索引: var groups = [[String]]() groupA.append(arr[randoms[0]]) groupA.append(arr[randoms[1]]) groupB.append(arr[randoms[2]]) groupB.append(arr[randoms[3]]) groupC.append(arr[randoms[4]]) groupC.append(arr[random

你好,我是SO的新成员,我需要一些帮助。有没有一种方法可以将循环计数的值作为索引:

var groups = [[String]]()

groupA.append(arr[randoms[0]])
groupA.append(arr[randoms[1]])

groupB.append(arr[randoms[2]])
groupB.append(arr[randoms[3]])

groupC.append(arr[randoms[4]])
groupC.append(arr[randoms[5]])

groupD.append(arr[randoms[6]])
groupD.append(arr[randoms[7]])

groupE.append(arr[randoms[8]])
groupE.append(arr[randoms[9]])

groups.append(groupA)
groups.append(groupB)
groups.append(groupC)
groups.append(groupD)
groups.append(groupE)

我希望随机数组的索引0-10来自一个循环或以某种方式是动态的。有什么方法可以通过swift实现这一点吗?

我想您正在寻找
枚举()函数。
函数

import Foundation
let randoms = [arc4random(),arc4random(),arc4random(),arc4random(),]
randoms.enumerated().forEach {
    print($0,$1)
}

在Xcode操场上试试吧。

你可能正在寻找这种东西。让我们去掉
random
,只需随机移动
arr
即可生成一个按随机顺序排列的实际值列表。(堆栈溢出上有大量数组洗牌代码,因此我不想麻烦告诉您如何执行。)然后,我们也可以去掉中间数组,直接处理数组
组的内部数组:

var groups : [[String]] = Array(repeating: [], count: 5)
var shuffled = ["hey", "ho", "nonny", "no", "sis", "boom", "bah", "yo", "hi", "lo"]

var next = 0
for ix in stride(from:0, to:9, by:2) {
    for ixx in 0..<2 {
        groups[next].append(shuffled[ix+ixx])
    }
    next += 1
}

groups // [["hey", "ho"], ["nonny", "no"], ["sis", "boom"], ["bah", "yo"], ["hi", "lo"]]
更好的是,我们可以将其作为阵列的扩展:

extension Array {
    func chunked(by chunkSize:Int) -> [[Element]] {
        let groups = stride(from: 0, to: self.count, by: chunkSize).map {
            Array(self[$0..<[$0 + chunkSize, self.count].min()!])
        }
        return groups
    }
}


let shuffled = ["hey", "ho", "nonny", "no", "sis", "boom", "bah", "yo", "hi", "lo"]
let groups = shuffled.chunked(by:2)

groups // [["hey", "ho"], ["nonny", "no"], ["sis", "boom"], ["bah", "yo"], ["hi", "lo"]]
扩展数组{
func chunked(按chunkSize:Int)->[[Element]]{
让组=步幅(从:0到:self.count,按:chunkSize).map{

数组(self[$0..为什么你需要
randoms
?只需生成随机数。我生成的随机数不会重复相同的数字,并将其存储在数组中,我想这可能就是原因。:)在这种情况下,为什么不直接洗牌
arr
?现在洗牌数组的前10项是要分组的项目。洗牌所有项目后,我如何将其分组?因为我在这里使用多维数组,这不起作用,我应该如何将其与我的代码一起使用?别忘了
导入基础
Hafeez Sagay,我只是想告诉你如何将数组中的项的索引合并到循环中。
extension Array {
    func chunked(by chunkSize:Int) -> [[Element]] {
        let groups = stride(from: 0, to: self.count, by: chunkSize).map {
            Array(self[$0..<[$0 + chunkSize, self.count].min()!])
        }
        return groups
    }
}


let shuffled = ["hey", "ho", "nonny", "no", "sis", "boom", "bah", "yo", "hi", "lo"]
let groups = shuffled.chunked(by:2)

groups // [["hey", "ho"], ["nonny", "no"], ["sis", "boom"], ["bah", "yo"], ["hi", "lo"]]