在swift中查找整数数组和的最简单(最好)方法是什么?我有一个叫做multiples的数组,我想知道multiples的和。
在Swift 4中,您还可以将序列元素约束为数字协议,以返回序列中所有元素的总和,如下所示
extension Sequence where Element: Numeric {
/// Returns the sum of all elements in the collection
func sum() -> Element { return reduce(0, +) }
}
编辑/更新:
Xcode 10.2•Swift 5或更高版本
我们可以简单地将序列元素约束到新的AdditiveArithmetic协议,以返回集合中所有元素的总和
extension Sequence where Element: AdditiveArithmetic {
func sum() -> Element {
return reduce(.zero, +)
}
}
Xcode 11•Swift 5.1或更高版本
extension Sequence where Element: AdditiveArithmetic {
func sum() -> Element { reduce(.zero, +) }
}
let numbers = [1,2,3]
numbers.sum() // 6
let doubles = [1.5, 2.7, 3.0]
doubles.sum() // 7.2
要对自定义对象的属性求和,我们可以扩展序列以获取谓词,以返回符合AdditiveArithmetic的值:
extension Sequence {
func sum<T: AdditiveArithmetic>(_ predicate: (Element) -> T) -> T { reduce(.zero) { $0 + predicate($1) } }
}
用法:
struct Product {
let id: String
let price: Decimal
}
let products: [Product] = [.init(id: "abc", price: 21.9),
.init(id: "xyz", price: 19.7),
.init(id: "jkl", price: 2.9)
]
products.sum(\.price) // 44.5
Swift 3一行程序对对象的属性求和
var totalSum = scaleData.map({$0.points}).reduce(0, +)
其中点是我的自定义对象缩放中的属性我试图减少的数据
这是我能找到的最简单/最短的方法。
Swift 3和Swift 4:
let multiples = [...]
let sum = multiples.reduce(0, +)
print("Sum of Array is : ", sum)
Swift 2:
let multiples = [...]
sum = multiples.reduce(0, combine: +)
更多信息:
这使用了Array的reduce方法(这里有文档),它允许您“通过递归应用提供的闭包将元素集合减少到单个值”。我们给它0作为初始值,然后,本质上,闭包{$0$1}。当然,我们可以将其简化为一个加号,因为这就是Swift滚动的方式。
问题内容: 快速找到整数数组总和的最简单(最佳)方法是什么?我有一个称为倍数的数组,我想知道倍数的总和。 问题答案: 这是我能找到的最简单/最短的方法。 Swift 3和Swift 4: 斯威夫特2: 更多信息: 这使用了Array的reduce方法(在此处提供文档),该方法允许您“通过递归应用所提供的闭包将元素的集合减少到单个值”。我们给它0作为初始值,然后本质上给闭包赋值。当然,我们可以将其简
问题内容: 如何在数组中查找重复元素?我有一组电话号码,因此在电话号码中,我应该从右侧到左侧开始搜索,并找到相似的6个整数。那我应该把它们打印出来。 问题答案: 要查找重复项,可以按电话号码建立交叉引用,然后将其过滤为仅重复项。例如,考虑: 在Swift 4中,您可以使用以下命令构建交叉引用字典: 要么 然后,找到重复项: 显然,请使用对您有意义的任何模型类型,但是上面的模型使用以下类型: 有很多
问题内容: 我有一个多维数组,我想获取围绕该数组中特定元素的元素。 例如,如果我有以下内容: 如何找到以上任何一个元素中的所有8个元素?以及如何处理边缘的元素? 我发现的一种方法是为此编写9行代码,这很明显,但是有更好的解决方案吗? 问题答案: for (i = 0; i < array.length; i ) { for (j = 0; j < array[i].length; j ) { fo
问题内容: 我有一个看起来像这样的表: 还有其他几列与此问题无关。将它们存储为JSON是有原因的。 我要尝试的是查找具有特定 艺术家姓名 (精确匹配)的曲目。 我正在使用此查询: 例如 但是,这会进行全表扫描,而且速度不是很快。我尝试使用function创建一个GIN索引,并使用,但是未使用该索引,查询实际上要慢得多。 问题答案: 在Postgres 9.4+ 使用新的二进制JSON数据类型 ,P
问题内容: 我有一个清单“ a” 我需要找到一个特定数字的所有元组。说1 我怎么做? 问题答案: 如果只希望第一个数字匹配,则可以这样操作: 如果您仅搜索其中包含1的元组: