Arrays 如何按值处理2个不同长度的数组?

Arrays 如何按值处理2个不同长度的数组?,arrays,swift,dictionary,Arrays,Swift,Dictionary,想想一家公司,员工的工作能力各不相同。将根据员工的能力雇用他们。每天都应该有类似的容量 我想要数组1的值​​在几天内,阵列将均匀分布 例如:周四->2项5值,周五->1项5值 周六->1项和6项价值,周日->2项和6项价值 让它以相似的数字分布 我有两个这样的数组: let days = ["Thursday","Friday","Saturday","Sunday"] var array1: [T] = [T(na

想想一家公司,员工的工作能力各不相同。将根据员工的能力雇用他们。每天都应该有类似的容量

我想要数组1的值​​在几天内,阵列将均匀分布

例如:周四->2项5值,周五->1项5值 周六->1项和6项价值,周日->2项和6项价值

让它以相似的数字分布

我有两个这样的数组:

let days = ["Thursday","Friday","Saturday","Sunday"]
var array1: [T] = [T(name: "a", value: 3),T(name: "b", value: 2),T(name: "c", value: 5),T(name: "d", value: 1),T(name: "e", value: 6),T(name: "f", value: 4)]
如何将array1对象分配到days数组

我试过这个:

var arrayValueTotal = 0
for t in array1{
   arrayValueTotal = arrayValueTotal + t.value        
}


var upperLimit = Double(Double(arrayValueTotal)/Double(days.count)) // This will get value per day. 22/4 = 5.5


for i in (0...days.count-1){ //Handling the days
   for j in array1{ 
         if j.value >= Int(upperLimit){ //handling the array1's value


         }else if j.value < Int(upperLimit){
                    

         }
    }
}
这是T类:

class T {
    var name:String
    var value:Int
    init(name:String, value:Int) {
        self.name = name
        self.value = value
    }
}

我怎么能得到这个?提前感谢。

好的,如果我理解正确,让我们首先根据
限制(
限制
)来分隔
阵列1
(您自己计算):

然后


这是无效的语法。@Alexander更新了语法。
t(“a”:3)
应该是什么?@JoakimDanielson重新更新。@BorderFree您还应该翻译所有标识符、字符串、注释等。这里的大多数目标听众不会说土耳其语,所以,如果你想让你的问题得到任何关注/互动,你会想用英语。这真是一个很棒的解决方案。尊敬
class T {
    var name:String
    var value:Int
    init(name:String, value:Int) {
        self.name = name
        self.value = value
    }
}
var array1: [T] = [T(name: "a", value: 3),
                   T(name: "b", value: 2),
                   T(name: "c", value: 5),
                   T(name: "d", value: 1),
                   T(name: "e", value: 6),
                   T(name: "f", value: 4)]

let reducedArray = array1.reduce(into: [[T]]()) { result, current in
    guard var last = result.last else { result.append([current]); return }
    if last.reduce(0, { $0 + $1.value }) < limit {
        last.append(current)
        result[result.count - 1] = last
    } else {
        result.append([current])
    }
}
[
  [T(name:a, value: 3), T(name:b, value: 2)],
  [T(name:c, value: 5)],
  [T(name:d, value: 1), T(name:e, value: 6)],
  [T(name:f, value: 4)]
]
var final: [(String, [T])] = []
for i in 0..<min(days.count, reducedArray.count) { //If the count aren't equal, what to do with the left values?
    final.append((days[i], reducedArray[i]))
}

print("Final: \(final)")
[
 ("Thursday", [T(name:a, value: 3), T(name:b, value: 2)]),
 ("Friday", [T(name:c, value: 5)]),
 ("Saturday", [T(name:d, value: 1), T(name:e, value: 6)]),
 ("Sunday", [T(name:f, value: 4)])
]