我有一个array1,并过滤它,这样它的任何包含array2中任何字符串的元素都会被移除:
var array1 = ["first.food", "second.easy.good", "third.long.bad", "4.bad.apple", "cinco.Thank You!"]
let array2 = ["food", "bad"]
预期结果:array1 =["第二个。简单。好","cinco。谢谢!"]
我通过循环遍历array2并过滤array1来实现这一点,
for string in array2 {
array1 = array1.filter { !$0.contains(string) }
}
result:array1 =["第二个.容易.好","cinco.谢谢!"]
但它能在一条生产线上完成吗?如果能,效率会更高还是更低?
编辑:根据@matt已接受的答复,从问题中删除"功能"一词。
(上一个问题:但它能在一条生产线上完成功能吗?如果能,效率会更高还是更低?)
1条答案
按热度按时间7ivaypg91#
功能上在一条线上...高效?
效率可能来自于将点串解析成一个集合,尤其是将第二个数组转换成一个集合,这样
contains
会更快;实际上,如果它们都是集合,则可以使用intersection
,这非常高效。这将是值得的,特别是如果数量很大,因为准备确实需要一点时间。
但这与“函数式编程”“无关”,“函数式编程”只是一种说法,不是提高效率的方法,“行数”与效率也没有丝毫关系;一行程序(如我的
let result
行)看起来很有趣,但它对幕后发生的事情没有任何影响。