滤波阵列
问题描述:
的阵列时扫描所有/特定数组值以下是示例代码:滤波阵列
var myArray = [["one", "two"], ["three", "four"]]
var filteredArray = myArray.filter{ value in value[1] != "four"}
filteredArray //[["one", "two"]]
此代码应该过滤掉包含“四”任何阵列。它正确地做到了,但仅仅是因为我将值定位到特定的数组[1],因为我知道它包含“四个”。 我应该如何重新格式化这段代码,所以我不需要指定特定的数组,所以它会扫描那里的所有值?当使用“for循环”时,我们可以使用一个声明的“i”变量。但是如何用.filter函数做类似?另外,更具体地说,我如何重新设置这段代码的格式,以便过滤数组并排除所有具有“四个”但具体为第二个值(index [1])的数组,而不是如果它们具有“四个”任何其他指数的位置,如以前的要求。再次在没有“我”变量的情况下,我不知道该怎么做。感谢您的帮助。
答
知道,过滤器回调在每次迭代接收内部阵列,我们可以使用reduce
该阵列上以检查是否它包含four
字符串:,
var filteredArray = myArray.filter {
let count = $0.reduce(0) {
$0 + ($1 == "four" ? 1 : 0)
}
return count == 0
}
在reduce
闭合如果一个或多个元件是four
,返回值将是一个大于零的整数。
智能帮我搞定了tsk – 2014-11-04 16:19:59