Arrays 如何按值处理2个不同长度的数组?
想想一家公司,员工的工作能力各不相同。将根据员工的能力雇用他们。每天都应该有类似的容量 我想要数组1的值在几天内,阵列将均匀分布 例如:周四->2项5值,周五->1项5值 周六->1项和6项价值,周日->2项和6项价值 让它以相似的数字分布 我有两个这样的数组: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
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)])
]